好的,所以我有一个更新表的查询,但只有当我删除更新的组部分时,它才有效,没有它,它可以正常工作。
所以我理解群组可能是一个保留的关键字,我尝试将其放置为[group]
,但它仍无效。
当我回复查询时:
UPDATE users SET username='superman', dob='0000-00-00', location='The Daily Planet ', group='2' WHERE id='136'
它只是不插入数据库。 谁知道我怎么能让这个工作?
完整的php code inc查询:
require 'core/init.php';
$username = mysql_real_escape_string($_POST["username"]);
$dob = mysql_real_escape_string($_POST["dob"]);
$location = mysql_real_escape_string($_POST["location"]);
$group = mysql_real_escape_string($_POST["group"]);
$user_id = (int)$_POST['id'];
$result = mysql_query("UPDATE users
SET username='$username',
dob='$dob',
location='$location',
group='$group'
WHERE
id=$user_id");
header("location:admin.php");
答案 0 :(得分:3)
对任何reserved word使用反引号`。更好的是对任何列名,表名等使用反引号。
UPDATE `users`
SET `username` = '$username', `dob` = '$dob',`location` = '$location',`group` = '$group'
WHERE `id` = $user_id
答案 1 :(得分:1)
方括号([]
)在Microsoft SQL Server和Access中用作转义字符。反引号用于MySQL。标准字符是双引号,几乎在所有其他数据库中都可以使用。
应警告您不要在数据库中使用保留字作为名称。特别是,作为基本SQL语法一部分的保留字。类似的东西:
select "group", count("group")
from t
group by "group"
可能很难阅读。
最后,我认为你应该只逃避实际的保留词,而不是一切:
UPDATE users
SET username = '$username',
dob = '$dob',
location = '$location',
"group" = '$group'
WHERE id = $user_id