2012-10-23 30 views
0

ID ans1_r ans2_r ans3_r ans4_r ans5_r ans6_r笨設定值

我在anketemale表這些字段。所有字段都是整數。

$answer是列名稱。 $id是所選行的ID。 所以我想在特定的行和只是其中一個ans字段+1。我寫了這段代碼:

function upisi_malu($id,$answer) 
    { 
     $anketadb = $this->load->database('anketa',TRUE); 

    $anketadb->select($answer); 
    $anketadb->where('id', $id); 
    $q = $anketadb->get('anketemale'); 

    foreach ($q->result() as $row) 
    { 
    $ans = $row->$answer + 1; 
    } 
    echo $answer; //just to know I echo them, and values are right 
    echo $ans; 
    echo $id; 
    $anketadb->set($answer, $ans); 
    $anketadb->where('id', $id); 
    $anketadb->insert('anketemale'); 
} 

爲什麼這段代碼寫新行的每一個變化?我只是想改變已存在的行。

+0

由於您正在運行插入查詢,並且您的數據庫顯然沒有將id設置爲唯一鍵。 –

+0

Id設置爲自動增量,並且在每一行都創建一個更大的ID的新行,所以我認爲它不是那個。 – Daniela

+0

自動增量並將其設置爲一個鍵不是一回事。在phpMyAdmin的結構中查看你的表,查看底部,看看是否有任何索引設置我猜不。 –

回答

2
foreach ($q->result() as $row) 
{ 
    $ans = $row->$answer + 1; 
    $anketadb->set($answer, $ans); 
    $anketadb->where('id', $id); 
    $anketadb->update('anketemale'); 
} 

這是我可以根據您的信息想出的最佳猜測。您在示例中使用的是insert而不是updateinsert將始終創建一個新行... update只會更新存在如果where匹配存在的行。

+0

+1你已經修復了他的foreach結局。 –