通过PHP使用单个查询更新多个MySQL字段

时间:2013-02-08 10:27:25

标签: php mysql

我正在尝试使用PHP更新MySQL数据库中的多个字段。变量是使用Ajax从HTML表单传递的。出于某种原因,查询似乎失败了,我无法弄清楚原因。

我已经检查过变量是否已正确传递且一切正常,所以我认为SQL查询存在问题。我试过用精美的牙齿梳理它,但不能为我的生活弄清楚什么是错的!我知道我可能错过了一些显而易见的东西,但任何人都可以帮助我吗?

谢谢!

这是PHP代码:

<?php

//Connect to database
include_once('../../dbconnect.php');

//Retrieve Variables from AJAX call
$name = $_POST['name'];
$size = $_POST['changesize'];
$delivery = $_POST['changedelivery'];
$venue = $_POST['changevenue'];
$level = $_POST['changelevel'];
$modules = $_REQUEST['changemodules'];
$insertmodules = json_decode(stripslashes($modules), true);

//Update database using variables
mysql_query ("UPDATE users SET level=$level, size=$size, delivery=$delivery, venue=$venue, mod1=$insertmodules[0], mod2=$insertmodules[1], mod3=$insertmodules[2], mod4=$insertmodules[3], mod5=$insertmodules[4], mod6=$insertmodules[5], mod7=$insertmodules[6], mod8=$insertmodules[7], mod9=$insertmodules[8], mod10=$insertmodules[9] WHERE name=$name") 
 or die (mysql_error);

//Return Data
echo "Course updated for $name";

?>

2 个答案:

答案 0 :(得分:2)

mysql_error()是一个函数,而不是常数。添加大括号,看看发生了什么。

您很可能没有正确格式化您的值。

例如,对于字符串,您必须同时使用

  • 将其括在引号
  • 中删除这些引号

虽然你两个都没做。

对于数字,您必须明确地将它们转换为正确的类型。

答案 1 :(得分:1)

例如,如果$ _POST ['changelevel']包含字符串,则应使用引号。 您应该对所有变量实施此规则。

UPDATE users
SET level='$level', size='$size', delivery='$delivery', venue='$venue', mod1=$insertmodules[0], mod2=$insertmodules[1], mod3=$insertmodules[2], mod4=$insertmodules[3], mod5=$insertmodules[4], mod6=$insertmodules[5], mod7=$insertmodules[6], mod8=$insertmodules[7], mod9=$insertmodules[8], mod10=$insertmodules[9] 
WHERE name=$name")

不使用引号只允许使用整数值。