我正在編寫 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 關注
- 104 瀏覽
添加回答
舉報
0/150
提交
取消