0

id ans1_r ans2_r ans3_r ans4_r ans5_r ans6_r

私はこれらのフィールドをanketemale テーブルに持っています。すべてのフィールドは整数です。

$answer列名です。$id選択した行のIDです。 したがって、特定の行とansフィールドの1つだけで+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'); 
}

このコードがすべての変更を新しい行に書き込むのはなぜですか?すでに存在する行を変更したいだけです。

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 に答える