【发布时间】:2012-10-23 12:45:11
【问题描述】:
身份证 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');
}
为什么这段代码将每次更改都写入新行?我只想更改已经存在的行。
【问题讨论】:
-
因为您正在运行插入查询,而您的数据库显然没有将 id 设置为唯一键。
-
Id 设置为自动递增,并且在每一行中都会创建一个具有更大 id 的新行,所以我认为这与此无关。
-
自动递增和将其设置为键不是一回事。在结构中查看您在 phpMyAdmin 中的表,查看底部并查看是否设置了任何索引我猜没有。
标签: database codeigniter insert set