编辑用户的帐户详细信息

时间:2014-04-24 13:13:36

标签: php mysql sql syntax-error

$query = " UPDATE Users SET username = " 
  . $username 
  . "AND password =" 
  . $password 
  . "AND email =" 
  . $email 
  . " WHERE id = '$id'";

即时将此查询放入我的数据库sql窗口,我收到此消息

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$query = " UPDATE Users SET username = " . $username . "AND password =" . $passw' at line 1 

任何人都可以提供帮助

7 个答案:

答案 0 :(得分:3)

Mysql Update查询无法以您尝试的方式运行

$query = "UPDATE 
Users 
SET username = '$username',
password ='$password',
email ='$email'
WHERE id = '$id'";

需要对字符串值使用单引号,并且更新的列需要用逗号分隔。

此外,您需要开始使用带有预准备语句的mysqli或PDO。

答案 1 :(得分:1)

您需要引号,将and替换为,

$query = " UPDATE Users SET username = '" . $username . "' , password = '" . $password . "' , email = '" . $email . "' WHERE id = '$id'";

然而考虑injection问题

答案 2 :(得分:0)

请考虑转到Mysqli并且您的代码也容易受到注入。

截至您的问题

$query = " UPDATE Users SET username = '$username' AND password ='$password' AND email ='$email' WHERE id = '$id'";

应该可以正常工作

答案 3 :(得分:0)

'引号括起值

$query = "UPDATE Users 
          SET username = "'.$username.'" ,password="'.$password.'" ,email ="'. $email.'"
          WHERE id = '$id'"; /* note enclosing single quotes above */

答案 4 :(得分:0)

$query = "UPDATE Users SET username='$username', password='$password', email='$email' WHERE id='$id'";

答案 5 :(得分:0)

所有其他答案都提出了非常有效的观点,但真正的问题(导致提供错误的实际问题)似乎是您将PHP语句直接放入SQL解释器中。 SQL / MySQL不会为你解析PHP。您需要在PHP环境中运行该命令。

答案 6 :(得分:-1)

这似乎是一个语法错误。尝试使用单引号和点+ + / / p>替换双引号

$ query ='UPDATE用户SET username ='+ $ username +'AND password ='+ $ password +'AND email ='+ $ email +'WHERE id ='+ $ id;

如果$ id是一个varchar,再次用单引号括起来。