Php 为什么我在尝试计算mysqli结果时会收到警告?
以下代码导致此警告: 警告:count():参数必须是实现可计数的数组或对象 为什么会这样?我怎样才能避免警告Php 为什么我在尝试计算mysqli结果时会收到警告?,php,mysql,mysqli,count,Php,Mysql,Mysqli,Count,以下代码导致此警告: 警告:count():参数必须是实现可计数的数组或对象 为什么会这样?我怎样才能避免警告 if (isset($_GET['edit'])) { $sonum = $_GET['edit']; $update = true; $result = $mysqli->query("SELECT * FROM salesorder WHERE sonum=$sonum") or die ($mysqli->error); if (co
if (isset($_GET['edit'])) {
$sonum = $_GET['edit'];
$update = true;
$result = $mysqli->query("SELECT * FROM salesorder WHERE sonum=$sonum") or die ($mysqli->error);
if (count($result)==1) {
$row = $result->fetch_array();
$salesperson = $row['salesperson'];
$company = $row['company'];
$status = $row['status'];
}
}
$result
将是mysqli_result
对象,如果查询失败,则false
。(请参阅mysqli_查询文档中的“”)这两个都不可计数。较新的PHP版本会在您尝试计数不可计数的对象时发出警告,即使count()
仍将返回值(目前!)
if(count($result)==1){
在PHP版本<7.2中不会发出警告,但它从未真正做过任何事情,因为无论查询是否失败,count($result)
都将始终为1。您可能不希望如此,但count(false)
返回1。这也是count()
现在发出警告是件好事的部分原因
如果您只是试图在查询返回任何行时设置这些变量,则可以这样做:
if ($result && $row = $result->fetch_array()) {
$salesperson = $row['salesperson'];
$company = $row['company'];
$status = $row['status'];
}
顺便说一下,您应该查看并修复…中的注入漏洞,其中sonum=$sonum”
。您应该使用准备好的语句并绑定$sonum
,而不是将其包含在SQL字符串中