1

我的代码是

$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 服务器版本相对应的手册,以username在第 7 行的 'WHERE =".$uname."'附近使用正确的语法

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

4

6 回答 6

6

您的查询是单引号,因此不会解析变量。正如您在错误中看到的那样,字符串实际上是

`username`=".$uname."

您需要在整个事物周围使用双引号,以正确解析变量。

$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.'"';

正如其他人所指出的,还有一个额外的,after postion="$position"

于 2012-05-01T15:13:56.533 回答
2

去掉分句,前的逗号WHERE

于 2012-05-01T15:11:06.217 回答
1

position="$position",where子句之间有一个尾随逗号。where删除子句前的逗号。

于 2012-05-01T15:11:02.683 回答
1

只需更改引号,并使用 DB 驱动程序功能更好地转义数据,例如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;
于 2012-05-01T15:11:39.400 回答
0
 UPDATE  
          users  
     SET  
          `password`="$password",  
          `email`="$email", 
          `position`="$position"
     WHERE  
          `username`=".$uname."';

你有一个尾随,位置

于 2012-05-01T15:11:41.283 回答
0

position="$position"后面多了一个逗号。删除它。

于 2012-05-01T15:12:49.257 回答