我正在编写 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;

}


梦里花落0921
浏览 80回答 1
1回答

宝慕林4294392

看来您正在使用 mysqli 扩展。如果你查看文档,它会mysqli::query说:失败时返回 FALSE。对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,mysqli_query() 将返回 mysqli_result 对象。在您的示例中,您始终假设查询有效,允许您访问mysqli_result::$num_rows. 但由于您从不检查查询的返回值,因此当查询失败时,您基本上会得到类似false->num_rows. 这就是您收到该通知的原因。现在,要检查查询失败的原因,您可以尝试检查$mysqli->error,在您的示例中为$db->error。
打开App,查看更多内容
随时随地看视频慕课网APP