WHERE附近的MySql查询错误

时间:2012-05-01 15:08:29

标签: php mysql sql

我的代码是

$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行的'WHERE username =“。$ uname。”'附近使用正确的语法。

任何人都可以帮我解决这个错误吗?

6 个答案:

答案 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”后你有一个额外的逗号。删除它。