我正在尝试编写一个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行
(再次,?实际上是一个反击')
我已经玩了好几年了,但是我看不出哪里出错了,请帮忙!谢谢!
答案 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')