PHP多个准备语句

时间:2016-08-18 10:28:52

标签: php mysqli prepared-statement

我想执行两个语句并在while循环中打印结果。每个语句都将从两个不同的表中选择数据。

我不确定解决此问题的最佳方法。

到目前为止我的代码如下;

$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;
}

感谢任何帮助。

1 个答案:

答案 0 :(得分: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;
}