我正在编写 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;}
1 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
看来您正在使用 mysqli 扩展。
如果你查看文档,它会mysqli::query
说:
失败时返回 FALSE。对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,mysqli_query() 将返回 mysqli_result 对象。
在您的示例中,您始终假设查询有效,允许您访问mysqli_result::$num_rows
. 但由于您从不检查查询的返回值,因此当查询失败时,您基本上会得到类似false->num_rows
. 这就是您收到该通知的原因。
现在,要检查查询失败的原因,您可以尝试检查$mysqli->error
,在您的示例中为$db->error
。
- 1 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消