为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
梦里花落0921 2023-09-22 16:13:20
我正在编写 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


查看完整回答
反对 回复 2023-09-22
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信