我的代码是
$user_query = '
UPDATE
users
SET
`password`="$password",
`email`="$email",
`position`="$position",
WHERE
`username`=".$uname."';
$user_result = mysql_query($user_query, $connection);
confirm_query($user_result);
当我运行此查询时,它给了我一个错误:
数据库查询失败:SQL 语法有误;
检查与您的MySQL服务器版本相对应的手册,了解在第7行的"WHEREusername
=".$uname."附近使用的正确语法
任何机构可以帮助我解决此错误吗?
查询使用单引号,因此不会分析变量。 正如您在错误中看到的那样,字符串实际上是
`username`=".$uname."
您需要在 enitre 事物周围使用双引号,以正确解析变量。
$user_query = "
UPDATE
users
SET
`password`='$password',
`email`='$email',
`position`='$position'
WHERE
`username`='$uname'";
或者正确使用字符串连接运算符 .
.
$user_query = '
UPDATE
users
SET
`password`="'.$password.'",
`email`="'.$email.'",
`position`="'.$position.'"
WHERE
`username`="'.$uname.'"';
正如其他人所指出的,postion="$position"
之后还有一个额外的,
。
删除WHERE
子句前的逗号,
只需更改引号,即可使用数据库驱动程序功能更好地转义数据,例如mysql_real_escape_string()
引号之间的区别:https://stackoverflow.com/a/3446286/765634
转义:http://php.net/mysql_real_escape_string
完整查询:
$user_query = <<<SQL
UPDATE
users
SET
`password`="{$password}",
`email`="{$email}",
`position`="{$position}",
WHERE
`username`="{$uname}"
SQL;
position="$position",
和 where
子句之间有一个尾随逗号。删除 where
子句前面的逗号。
UPDATE
users
SET
`password`="$password",
`email`="$email",
`position`="$position"
WHERE
`username`=".$uname."';
您有一个尾随,
后的位置
position
="$position"后面有一个额外的逗号。删除它。