MySQL:在1次调用中更新数组值的几个条目?

时间:2011-10-31 17:59:49

标签: php mysql

如果我在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次通话中完成所有这些?

3 个答案:

答案 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说的那样,但它非常难看。