如果我在MySQL数据库中有一个表,其字段 id 和位置 amung others。
然后在PHP中我有一个这样的数组:
Array
(
[0] => 1
[1] => 3
[2] => 8
[3] => 4
[4] => 5
[5] => 6
[6] => 7
)
数组键应映射到位置,数组值应映射到id。
例如,如果我为每个数组值调用,则第一个是
UPDATE table SET position = 0 WHERE id = 1
有没有办法在1次通话中完成所有这些?
答案 0 :(得分:3)
$string = "";
foreach($array as $k => $v)
$string .= "UPDATE table SET position = ".$v." WHERE id = ".$k.";";
mysql_query($string);
答案 1 :(得分:1)
可以为每条记录更新具有不同值的多个记录,但不建议这样做 - 这会产生令人难以置信的难看的查询:
UPDATE table
SET position = CASE position
WHEN 0 THEN 1
WHEN 1 THEN 3
WHEN 2 THEN 8
etc...
答案 2 :(得分:0)
这里我们采用foreach解决方案:
$Array = array(0 => 1, 1 => 3);
if(count($Array) > 0){
foreach($Array as $Key => $Value)
// UPDATE table SET position = 1 WHERE id = 3 LIMIT 1
mysql_query('UPDATE table SET position = '.$Key.' WHERE id = '.$Value.' LIMIT 1;');
}
问题:您无法使用MySQL进行多次更新...是的,就像Marc B说的那样,但它非常难看。