2016-08-18 124 views
0

我想執行兩條語句並在while循環內打印結果。每條語句將從兩個不同的表中選擇數據。PHP多個預處理語句

我不知道最好的方法來解決這個問題。

我的代碼到目前爲止如下;

$conn = new mysqli('localhost', 'user', 'password', 'db'); 

if ($conn->connect_errno > 0) { 
    die('Unable to connect to database [' . $conn->connect_error . ']'); 
} 

$curDate = date("Y-m-d"); 

//first stmt 
$stmt = $conn->prepare("SELECT start, status FROM log WHERE start >= ?"); 
$stmt->bind_param('s', $curDate); 
$stmt->execute(); 
$stmt->bind_result($start, $status); 
$stmt->close(); 

//second stmt 
$stmt = $conn->prepare("SELECT time FROM params"); 
$stmt->bind_result($time); 
$stmt->execute(); 
$stmt->close(); 


/* fetch values and echo for testing */ 
while ($stmt->fetch()) { 
    echo $start; 
    echo $status; 
    echo $time; 
} 

任何幫助表示讚賞。

+0

任何原因,你不能在一個查詢中獲取它們呢? – Styphon

+0

我假設這兩個查詢之間必須有一個關係,否則,如果你在同一個循環中遍歷它們,這並不重要。難道你只需將這兩張表連接在一起,並在Styphon所說的一個查詢中選擇需要的列? – Ozzy

+0

@Styphon我真的不知道該怎麼做:/ –

回答

0

一般來說,有沒有什麼特別在運行兩個或幾個準備好的語句 - 你只是一個接一個地運行它們。因此根本沒有「最佳途徑」。

在您的特定情況下,最好的辦法就是擺脫準備的語句:

$time = $conn->query("SELECT time FROM params")->fetch_object()->time; 

$res = $conn->query("SELECT start, status FROM log WHERE start >= CURDATE()"); 
while($row = $res->fetch_object()) 
{ 
    echo $row->start; 
    echo $row->status; 
    echo $time; 
} 
+0

謝謝你,我現在就放棄它!我在哪裏包含execute()和close()語句? –

+0

無處可做。 –