我很容易通过以下方式完成这项工作:
if(mysqli_num_rows($result) > 0){
while ($row = mysqli_fetch_array($result)) {
$id_product = $row['id_courses'];
$product = $row['product'];
$title = $row['title'];
$subtitle = $row['subtitle'];
$price = $row['price'];
}
}
然后只在页面的任何部分打印变量的值,如下所示:
echo $product;
如何使用面向对象的查询执行相同操作?
与上一个查询一样,此查询也有效,我执行相同的过程并正确打印值:
echo $product;
但在以下查询中将此代码while ($stmt->fetch()) {}
留空是正确的
$stmt->bind_param("i",$active);
$stmt->execute();
$stmt->bind_result( $id_product,$product,$subtitle,$price);
while ($stmt->fetch()) {
}
答案 0 :(得分:0)
摆脱while
。
对你的旧方法没用,并且对第二种方法有害。
你必须明白,虽然这不是数据库交互的必要部分,而是获得多个行的方法。但是因为你只提取了一行,所以根本不应该使用它。
您的第一个代码块应该是
$result = mysqli_query(...);
$row = mysqli_fetch_array($result);
$id_product = $row['id_courses'];
...
和第二个
$stmt->bind_param("i",$active);
$stmt->execute();
$stmt->bind_result( $id_product,$product,$subtitle,$price);
$stmt->fetch();
在第一个块中你手动保存变量,而这就是它们在循环外可用的原因。但是在第二种情况下,它们直接由fetch()方法填充,因此当不再有数据时,它会在最后一次迭代时将它们全部清空。