我有一个关于这个问题,我找不到我的代码中的问题在哪里,任何人都可以帮助我,请。
<?php
if($_POST['submit']) {
$username = $_POST['username'];
$password = $_POST['password'];
$id = $_POST['id'];
$query = "UPDATE users SET ";
$query .="username = '$username' ";
$query .="password = '$password' ";
$query .="WHERE id = $id";
$result = mysqli_query($connection, $query);
if(!$result) {
die ('QUERY FAILED' . mysqli_error($connection));
}
}
?>
我需要将新数据更新到MySQL中,但它显示了错误消息:
致命错误:未捕获的mysqli_sql_异常:SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,了解在'password ='av' WHERE id ='附近使用的正确语法
2条答案
按热度按时间qqrboqgw1#
查询中缺少,“”。
更新查询应为:
UPDATE users SET username = 'username', password = 'password' where id = 1
yizd12fk2#
正如Majharul正确指出的那样,错误是由
SET
子句中列出的列之间缺少逗号(,
)引起的。错误几乎总是紧接在错误中返回的查询部分之前:password='av' WHERE id=
.更重要的是,你不应该以纯文本存储密码,也不应该简单地连接字符串和/或直接将变量插入SQL。这是一个非常明显的SQL Injection漏洞和easy to exploit。你应该使用parameterized prepared statements将变量传递到查询中。
这是一个简单的示例(应该添加用户输入验证),说明您可以如何改进代码:
请阅读PHP docs for password_hash()了解更多详细说明。