簡體   English   中英

Codeigniter查詢行數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM