2012-07-03 57 views
1

第一次使用CI,我用這個看似簡單的問題粉碎了我的腦袋。我的查詢不會插入記錄。Codeignighter Record不會插入

在試圖調試一個可能的問題時,插入代碼已被簡化,但我仍然沒有喜悅。

本質上,我使用;

$data = array('post_post' => $this->input->post('ask_question')); 
$this->db->insert('posts', $data); 

我越來越沒有錯誤(儘管這可能是由於在配置/ database.php中禁用它們由於其他CI相關的創傷: - $)

伊夫使用

echo print $this->db->last_query(); 

得到生成的查詢,如下圖所示:

INSERT INTO `posts` (`post_post`) VALUES ('some text') 

我已經將這個查詢粘貼到phpMyAdmin中,它插入沒有p roblem。我甚至嘗試使用$this->db->query()在'手動'上面運行輸出的查詢,但是再次,該記錄不會被插入。

DB表'posts'的方案只是兩列,post_id & post_post。

請上什麼這裏發生了任何指針將不勝感激...謝謝

回答

1

行..已經解決了,與CI有很大關係。

通過將持續連接設置爲false來獲得它的工作。

$db['default']['pconnect'] = FALSE;

嘆息

0

東西一般看行,你所說的一切都表明,它應該工作。我的第一本能是檢查你插入的內容是否與你的SQL字段兼容。

只是一個很酷的CI功能;我建議你看看CI Database Transaction課。交易允許你包裝你的查詢/交易,這可以回滾失敗的內部查詢,也可以使錯誤處理簡單:

$this->db->trans_start(); 
    $this->db->query('INSERT INTO posts ...etc '); 
    $this->db->trans_complete(); 

    if ($this->db->trans_status() === FALSE) 
    { 
     // generate an error... or use the log_message() function to log your error 
    } 

另外,有一兩件事你可以做的就是把你插入SQL語句轉換成$ this-> db->query(your_query_here),而不是調用insert。有一個稱爲綁定的CI查詢功能,它也會自動轉義您傳遞的數據數組。

讓我知道它是怎麼回事,並希望這有助於!

+0

不,不會工作。我檢查了這些字段以確保可以插入文本字符串。我檢查了用戶數據庫的權限,檢查他們可以添加,我嘗試了另一個表,使用if語句之上的代碼沒有觸發。我錯過了什麼? < – Cri001