MySQL UPDATE字段名称来自数组,字段值来自数组

时间:2011-03-21 15:43:06

标签: php mysql

我正在尝试编写一个MySQL查询(在PHP中),它将更新一个(内爆)数组中包含的一组字段名,其中包含一组包含在另一个(内爆)数组中的值。

我现在拥有的是:

$edit= mysql_query ("UPDATE tablename SET `".$EXPfields."` = '".$EXPvalues."' 
WHERE ID = '$ID'");

但对于$EXPfields = EXP1, ?EXP2?, ?EXP3
$EXPvalues = Communications', 'Electronics', 'Engineering
(两个内爆阵列,?实际上是一个反引号:`)

我收到以下错误消息:

  

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'?EXP2?,?EXP3附近使用正确的语法? ='通信','电子','工程''在第2行

(再次,?实际上是一个反击')

我已经玩了好几年了,但是我看不出哪里出错了,请帮忙!谢谢!

3 个答案:

答案 0 :(得分:1)

更新查询具有以下语法:

UPDATE table
SET column = expression
WHERE predicates;


您可以遍历字段数组并创建一个包含列名和值的新数组。例如:

$update_sql = '';

for($i = 0;  $i < count($EXPfields);  ++i)
{
    $update_sql = "`" . $EXPfields[$i] . "` = '" . $EXPvalues[$i] . "', ";
}

$update_sql = substr($update_sql, 0, -2);

$edit = mysql_query("
    UPDATE
        tablename
    SET
        " . $update_sql . "
    WHERE
        ID = '$ID'");

答案 1 :(得分:0)

UPDATE table
  SET
    field1 = expression1,
    field2 = expression2,
    field3 = expression3
 WHERE ...

答案 2 :(得分:0)

您需要使用逗号分隔的field = value对。例如:

$query = UPDATE ?tablename? SET ?field1?='value1', ?field2?='value2' WHERE (?field3?='value3')