我的代码是
$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。”'附近使用正确的语法。
任何人都可以帮我解决这个错误吗?
答案 0 :(得分:6)
您的查询是单引号,因此不会解析变量。正如您所看到的那样,字符串字面意思是
`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"
。
答案 1 :(得分:2)
在,
子句
WHERE
答案 2 :(得分:1)
position="$position",
和where
子句之间有一个逗号逗号。删除where
子句之前的逗号。
答案 3 :(得分:1)
只需更改引号,并使用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;
答案 4 :(得分:0)
UPDATE
users
SET
`password`="$password",
`email`="$email",
`position`="$position"
WHERE
`username`=".$uname."';
你的位置后有,
答案 5 :(得分:0)
position
=“$ position”后你有一个额外的逗号。删除它。