繁体   English   中英

向我发送错误的SQL语法

[英]SQL syntax which sending me an Error

我有一个名为用户的Mysql数据库。 这是一张图片: 在此处输入图片说明

我想以编程方式更改用户“ dodlo.rg”的用户名。

实际上,我有PHP版本7.1。 这是我的PHPCode的一部分:

编辑代码:

$newName= $_POST["changeT"];  
$userId = $_POST["userId"];

      $db = mysqli_connect("trolö", "trolö", "trolö123", "trolö")
      $sql = "UPDATE user SET username = '$newName' WHERE user_id = '$userId'";
      $query = mysqli_query($db, $sql);
      $response["successU"] = true;

但是我收到错误消息:“您在SQL语法中输入了错误;请查看与您的MariaDB服务器版本相对应的手册,以找到在第1行的'SELECT * FROM user'附近使用正确的语法”

提前致谢。

您必须将此查询转换为两部分

$sql1 = "UPDATE user SET username = $newName WHERE username = 'dodlo.rg'";
$sql2 = "SELECT * FROM user";

问题在于两部分。 首先,由于此列是varchar字段,因此必须在引号内,否则会产生sql错误。 其次,紧随其后的SELECT语句无效,但我想这是复制/粘贴错误。

因此,您的工作代码应为:

$newName= $_POST["changeT"];  

  $db = mysqli_connect("trolö", "trolö", "trolö123", "trolö")
  $sql = "UPDATE user SET username = '".addslashes($newName)."' WHERE username = 'dodlo.rg'";
  $query = mysqli_query($db, $sql);
  $response["successU"] = true;

另外,请考虑在where语句而不是varchar字段上使用主键,因为当执行更复杂的查询时,它将提高速度。 (例如, where user_id = 35 instead of where username = 'dodlo.rg' )。

最后,但非常重要的是,此代码可能容易受到sql注入的攻击。 您需要使用准备好的语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM