我正在尝试检查行是否存在。我正在
Commands out of sync; you can't run this command
我收到此错误是因为我添加$stmt->store_result();
如果删除该行num_rows
未返回true。如何检查行是否存在?
$title = urldecode($_GET['product-tit/']);
$id = $_GET['item-id-pr'];
$mydb = new mysqli('localhost', 'root', '', 'database');
if(empty($title) || empty($_GET['item-id-pr'])){
header('Location: products.php');
exit();
}
else{
$stmt = $mydb->prepare("SELECT * FROM products where title = ? AND id = ? limit 1 ");
$stmt->bind_param('ss', $title, $id);
$stmt->execute();
$stmt->store_result();
?>
<div>
<?php
if($stmt->num_rows < 1 ) {
echo "not found";
exit();
} else{
$result = $stmt->get_result();
echo $mydb->error;
while ($row = $result->fetch_assoc()) {
echo wordwrap($row['price'], 15, "<br />\n", true);
exit();
}
$mydb->close ();}}
?>
</div>
答案 0 :(得分:3)
PHP用户对行数的期望非常奇怪。每个人都非常渴望得到它,而在网络开发中,只有少数几个非常罕见的情况需要它。
说,这里我们实际上需要一些数据,而不是行数。但是只使用这个数字来查看我们是否有任何数据。它看起来不好笑/多余吗?如果我们已经拥有了我们的数据 - 为什么我们需要任何额外的设施来查看我们是否拥有它?
<?
if(empty($_GET['product-tit']) || empty($_GET['item-id-pr'])){
header('Location: products.php');
exit();
}
$stmt = $mydb->prepare("SELECT * FROM products where title = ? AND id = ? limit 1 ");
$stmt->bind_param('ss', $_GET['product-tit'], $_GET['item-id-pr']);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if (!$row) { // <---- HERE it is!
echo "not found";
exit();
}
?>
<div>