我是php的新手,我正在学习如何使用php在sql查询的帮助下更新表。但不知何故,我陷入了SQL查询部分。它总是显示我无法理解的错误。
我使用的查询是:$query= "UPDATE users SET username = '$username' , password = '$password' WHERE id = $id " ;
我得到的错误是:
您的SQL语法出错;查看与MariaDB服务器版本对应的手册,以获取正确的语法 靠近''第1行
起初我一直在寻找任何语法错误,但我想情况并非如此......
我还提到了我一直在使用的验证设置代码。
<?php
include "db.php";
include "functions.php";
?>
<?php
if(isset($_POST["submit"])){
$username= $_POST["username"];
$password= $_POST["password"];
$id= $_POST["id"];
$query= "UPDATE users SET username = '$username' , password = '$password' WHERE id = $id " ;
$result=mysqli_query($connection,$query);
if(!$result){
die("QUERY FAILED".mysqli_error($connection));
}
}
?>
已经在db.php .. 中定义了 $connection
你能说出我的错吗?
答案 0 :(得分:0)
如果您获得 ID,用户名和密码值,则
试试这个
$query= "UPDATE `users` SET `username` = '$username' , `password` = '$password' WHERE `id` = $id " ;
答案 1 :(得分:0)
您的密码是否在数据库中进行了哈希?如果是这样,那可能是你的问题。试试这个。
$password = mysqli_real_escape_string($_POST['password']);
$hashed_password = password_hash($password, PASSWORD_BCRYPT, array('cost => 12'));
$query= "UPDATE `users` SET `username` = '$username' , `password` =
'$hashed_password' WHERE `id` = $id " ;
如果您将密码作为纯文本存储在数据库中,我建议使用此password_hash函数。我还建议为此检查已准备好的语句,以及它更安全,并有助于防止SQL注入。