Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySql查询错误在何处附近_Php_Mysql_Sql - Fatal编程技术网

Php MySql查询错误在何处附近

Php MySql查询错误在何处附近,php,mysql,sql,Php,Mysql,Sql,我的代码是 $user_query = ' UPDATE users SET `password`="$password", `email`="$email", `position`="$position", WHERE `username`=".$uname."'; $user_result = mysql_query($user_query

我的代码是

$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.”附近要使用的正确语法


有人能帮我解决这个错误吗?

position=$position和where子句之间有一个逗号。删除where子句前面的逗号。

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

删除逗号,在where子句前面删除逗号,在where子句前面只需更改引号,最好使用数据库驱动程序函数(如mysql\u real\u escape\u string)转义数据

引号之间的差异:

转义:

完整查询:

$user_query = <<<SQL
     UPDATE  
          users  
     SET  
          `password`="{$password}",  
          `email`="{$email}", 
          `position`="{$position}", 
     WHERE  
          `username`="{$uname}"
SQL;

只需更改引号,更好地使用数据库驱动程序函数(如mysql\u real\u escape\u string)转义数据

引号之间的差异:

转义:

完整查询:

$user_query = <<<SQL
     UPDATE  
          users  
     SET  
          `password`="{$password}",  
          `email`="{$email}", 
          `position`="{$position}", 
     WHERE  
          `username`="{$uname}"
SQL;
你有一个尾随位置,后面位置


您在position=$position后面有一个尾随,position=$position后面有一个额外的逗号。删除它。

在position=$position后面有一个额外的逗号。删除它。

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

`username`=".$uname."
您需要在enitre事件周围使用双引号,以正确解析变量

$user_query = "
 UPDATE  
      users  
 SET  
      `password`='$password',  
      `email`='$email', 
      `position`='$position'
 WHERE  
      `username`='$uname'";
或正确使用字符串关联运算符


正如其他人所指出的,position=$position之后还有一个额外的position。

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

`username`=".$uname."
您需要在enitre事件周围使用双引号,以正确解析变量

$user_query = "
 UPDATE  
      users  
 SET  
      `password`='$password',  
      `email`='$email', 
      `position`='$position'
 WHERE  
      `username`='$uname'";
或正确使用字符串关联运算符


正如其他人所指出的,position=$position之后还有一个额外的逗号。

position name/value对后面有一个额外的逗号。此外,您缺少密码、电子邮件和位置变量的连接标记。引号也都已关闭。您使用单引号并期望使用var,然后使用双引号和串联。回显字符串以查看最终结果。谢谢大家的评论位置名称/值对后有一个额外的逗号。此外,您缺少密码、电子邮件和位置变量的连接标记。引号也都已关闭。您使用单引号并期望使用var,然后使用双引号和串联。回显字符串以查看最终结果。谢谢大家,谢谢你们的评论谢谢你们错误消失了,我被困在这几个小时了,你救了我的命哈哈。。再次感谢你谢谢你,错误已经消失了,我被困在这里好几个小时了,你救了我的命,哈哈。。再次感谢你