SELECT * FROM `products` WHERE `category` = ?
无论如何mysqli
,如果该语句返回空结果,是否知道使用和不获取?
$sql = $mysqli->prepare("SELECT * FROM `products` WHERE `category` = ?");
$sql->bind_param('s', $category);
$sql->execute();
var_dump($sql);
exit();
如您所见,我正在使用 var_dump 来查看是否有任何属性可以用于此目的。结果如下:
object(mysqli_stmt)#2 (9) {
["affected_rows"]=> int(-1)
["insert_id"]=> int(0)
["num_rows"]=> int(0)
["param_count"]=> int(1)
["field_count"]=> int(7)
["errno"]=> int(0)
["error"]=> string(0) ""
["sqlstate"]=> string(5) "00000"
["id"]=> int(2) }
我看不到任何可以用于了解查询是否返回某些行的目的。
或者,是否有可能在查询本身中解决整个问题?例如,if (SELECT * FROM products WHERE category = ?, RETURN 1, RETURN 0)
如果查询成功返回一些行,将始终返回 1?
我只想在没有产品与之关联的情况下从数据库中删除一个类别:只用几行代码这样做会好得多,但我不完全确定这是否可行
if (SELECT * FROM products WHERE category = ?, RETURN 1, (DELETE FROM categories WHERE name = ?))
最好的方法是什么?谢谢。
编辑:num_rows 不起作用
$sql->bind_param('s', $c);
$sql->execute();
while($sql->fetch())
printf("one line - " . "\n");
var_dump($sql->num_rows);
exit();
结果:
一行 - 一行 - 一行 - 一行 - 一行 - 一行 - int(0)