[英]Codeigniter Query Num Rows
我在CI應用程序中有以下代碼:
$query = "INSERT INTO user(user_name,user_email) VALUES(?,?)";
$result = $this->db->query($query,array($userName,$email));
if ($result->num_rows()>0)
return $this->db->insert_id();
else
return null;
這產生一個錯誤; 致命錯誤:在第38行的C:\\ xampp \\ htdocs \\ cmdline \\ application \\ models \\ mlogin.php中的非對象上調用成員函數num_rows()
第38行是行數大於0的條件。 現在我不知道發生什么了-我正在使用CI的文檔檢查行數是否大於0,為什么會失敗?
這是因為您正在執行INSERT
查詢。 在所有情況下,修改數據的查詢均返回TRUE
,因此您真正要嘗試的是TRUE->num_rows()
,這毫無意義,會導致錯誤。
您實際要檢查的是$this->db->affected_rows()
,它將告訴您在數據庫中插入了多少行。
盡管在這種情況下您沒有這樣做,但值得注意的是, affected_rows()
將僅返回查詢期間實際更改的行數,因此UPDATE
查詢實際上並未修改數據(即,如果字段已經具有值,查詢嘗試將其設置為),則該行將不會反映在affected_rows()
值中。
從CodeIgniter的文檔中。
當運行“讀取”類型的查詢時,query()函數將返回數據庫結果對象,可用於顯示結果。 運行“寫入”類型查詢時,它僅取決於成功或失敗而返回TRUE或FALSE。 檢索數據時,通常將查詢分配給自己的變量,如下所示:
您的查詢(因為它是INSERT)將僅返回TRUE或FALSE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.