检查行是否存在mysqli

时间:2013-08-13 07:00:15

标签: php mysqli

我正在尝试检查行是否存在。我正在

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>

1 个答案:

答案 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>