2014-12-02 92 views
0

所以我在過去兩天一直拉着我的頭髮。到目前爲止,我已經確定問題到這一點:Codeigniter有效記錄插入功能

我使用的活動記錄插入一些簡單的數據到數據庫:

if($this->db->insert('table', $data)){ 
    return true; 
} 
else{ 
    return false; 
} 

的問題是,它的數據是否得到了插入或總是返回true不。我如何解決這個問題是,在數據最終插入數次失敗之後,AUTO_INCREMENT ID爲17,表示插入查詢正在運行但未能插入,因此總是返回true。我想知道一個可靠的方法來知道數據是否被插入。試過:

$this->db->affected_rows() > 0; 

以及。但同樣的問題盛行。它返回true。

回答

0

如果你有汽車增量的ID在你的表,然後檢查是否插入大於零個或者我們號碼,然後我們可以說數據$this->db->insert_id()

再次觸發id爲一個SQL查詢,我們得到,如果記錄存在,則數據將被插入

,但我認爲這是沒有必要只檢查INSERT_ID

0

這是我做的。這個對我有用。

$this->db->set($data)->insert($table_name); 
if ($this->db->affected_rows()) { 
    return $this->db->insert_id(); // or return true; in your case 
} 
return false; 
0

您需要先插入數據並獲得結果。你將需要這樣做:

$this->db->insert('my_table', $my_data); 
$is_inserted = $this->db->affected_rows() > 0; 
if($is_inserted) { 
    echo 'Yay! Its works!'; 
} else { 
    echo 'Something went wrong. No insert):' 
} 

你必須在得到結果之前執行插入查詢。所以你需要運行你的插入,然後得到受影響的行。 Codeigniter提供的類別$this->db可幫助我們輕鬆完成此操作。您甚至可以運行$this->db->insert_id()而不是$this->db->affected_rows()以獲取全新插入的ID。

您可能會發現有用的這些鏈接:

查詢輔助函數 - https://ellislab.com/codeigniter/user-guide/database/helpers.html

的Active Record類 https://ellislab.com/codeigniter/user-guide/database/active_record.html

祝您好運!

0

我總是這樣做的檢查數據被插入或不

$this->db->insert('table', $data); 
$id = $this->db->insert_id(); 
if($id) 
{ 
    echo "data inserted"; 
} 
else 
{ 
    echo "data not inserted"; 
} 

你也可以做到這一點也爲我工作

$query = $this->db->insert('table', $data); 
    if($query) 
    { 
     echo "data inserted"; 
    } 
    else 
    { 
     echo "data not inserted"; 
    }