我正在尝试使用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";
?>
答案 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")
不使用引号只允许使用整数值。