2012-10-23 31 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结局。 –