SQL 向我发送错误的语法

SQL syntax which sending me an Error

我有一个 Mysql 数据库命名用户。这是一张照片:

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

实际上,我有 PHP-7.1 版。这是我的 PHP代码的一部分:

编辑代码:

$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;

但我收到错误:"You gave an Error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT * FROM user' at line 1"

提前致谢。

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

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

问题出在两个部分。 首先,由于此列是一个 varchar 字段,因此它需要放在引号内,否则会产生 sql 错误。 其次,紧接着的 SELECT 语句无效,但我猜这是一个 copy/paste 错误。

因此您的工作代码应该是:

$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 注入的攻击。您需要使用准备好的语句。