0

id ans1_r ans2_r ans3_r ans4_r ans5_r ans6_r

我在anketemale 表中有这些字段。所有字段都是整数。

$answer是列名。$id是所选行的 id。 因此,我想在特定行中+1,并且只是其中一个 ans 字段。我写了这段代码:

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'); 
}

为什么这段代码将每个更改都写入新行?我只想更改已经存在的行。

4

1 回答 1

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

这是我根据您的信息所能得出的最佳猜测。您正在使用insert而不是update在您的示例中。insert将始终创建一个新行...update只会更新where匹配时存在的行。

于 2012-10-23T15:26:53.460 回答