2016-08-18 94 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

无处可做。 –