0

我正在尝试使用 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";

?>
4

2 回答 2

2

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

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

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

  • 用引号括起来
  • 在里面逃避这些引号

而你什么都不做。

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

于 2013-02-08T10:30:24.347 回答
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")

只有整数值才允许使用不带引号的。

于 2013-02-08T10:30:38.167 回答