PHP多个预处理语句
问题描述:
我想执行两条语句并在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;
}
任何帮助表示赞赏。
答
一般来说,有没有什么特别在运行两个或几个准备好的语句 - 你只是一个接一个地运行它们。因此根本没有“最佳途径”。
在您的特定情况下,最好的办法就是摆脱准备的语句:
$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
无处可做。 –
任何原因,你不能在一个查询中获取它们呢? – Styphon
我假设这两个查询之间必须有一个关系,否则,如果你在同一个循环中遍历它们,这并不重要。难道你只需将这两张表连接在一起,并在Styphon所说的一个查询中选择需要的列? – Ozzy
@Styphon我真的不知道该怎么做:/ –