一般情况下更新一条记录
UPDATE TABLE SET `FIELD` ='value' WHERE id ='$id';
如果多N条记录需要更新,那就必须是
foreach ($sql as $id => $ordinal) {
....
UPDATE TABLE SET `FIELD` ='value' WHERE id ='$id';
.....
}
更好的解决方案
UPDATE TABLE
SET `FIELD` = CASE `ID`
WHEN ID1 THEN 'value'
WHEN ID2 THEN 'value'
WHEN ID3 THEN 'value'
END
WHERE id IN (ID1,ID2,ID3)
如果你需要更新一行记录的多个字段,可以用以下SQL语句:
按照语法,PHP的示例
$display_order = array(
ID1 => NEW VALUE,
ID2 => NEW VALUE,
ID3 => NEW VALUE,
ID4 => NEW VALUE,
ID5 => NEW VALUE,
ID6 => NEW VALUE,
ID7 => NEW VALUE,
ID8 => NEW VALUE
);
$ids = implode(',', $ids);
$sql = "UPDATE `Postmeta` SET `mate_value` = CASE `mate_key` ";
foreach ($mate_set as $key => $ordinal) {
$sql .= sprintf("WHEN '%s' THEN '%s' ", $key, $ordinal); // 拼接SQL语句
}
$sql .= "END WHERE `post_id` = '$id' AND `mate_key` IN ($ids)";
$model->quert($sql);