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