我正在处理CSV导入脚本并不断收到PHP通知(尝试获取非对象的属性"num_rows")



我正在编写CSV导入脚本。我碰到一张告示,上面写着";注意:正在尝试获取非对象的属性"num_rows";。

function getWardByCode($ward, $area_id){
global $db;
$query = $db->query("SELECT `id` FROM `wards` WHERE `code`='{$db->real_escape_string($ward)}', `area_id`='{$db->real_escape_string($area_id)}' LIMIT 1");
if (1 === $query->num_rows){
$data = $query->fetch_assoc();
return $data['id'];
}
$db->query("INSERT INTO `wards` (`code`, `area_id`) VALUES ('{$db->real_escape_string($ward)}', '{$db->real_escape_string($area_id)}')");
return $db->insert_id;
}

您似乎在使用mysqli扩展。

如果你看一下mysqli::query的文档,上面写着:

失败时返回FALSE。对于成功的SELECT、SHOW、DESCRIBE或EXPLAIN查询,mysqli_query((将返回一个mysqli_result对象。

在您的示例中,您总是假设查询有效,从而允许您访问mysqli_result::$num_rows。但是,由于您从不检查查询的返回值,所以当它失败时,您基本上会得到类似false->num_rows的结果。这就是你收到通知的原因。

现在,要检查查询失败的原因,可以尝试检查$mysqli->error,在您的示例中,它将是$db->error

最新更新