This question already has answers here:
When to use single quotes, double quotes, and backticks in MySQL
                                
                                    (12个答案)
                                
                        
                                在11个月前关闭。
            
                    
试图将哈希密码插入Phpmyadmin,但我得到一个


  错误:“字段列表”中的未知列'$ 2y $ 10 $ fMTEqdQnl3E3EQrq0t2TcelmNGhghIQz0kmXPeFyWKq0BgH7BHxYm'


<?php
$servername = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "usersystem";

$conn = new mysqli($servername, $dbusername, $dbpassword, $dbname);

$Username = $_POST["usrnm"];
$Password = $_POST["psw"];

$hash = password_hash($Password, PASSWORD_BCRYPT);

$sql = "INSERT INTO users (Username, Password) VALUES ('$Username', $hash)";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}



$conn->close();
?>

最佳答案

您需要在哈希周围添加单引号

$sql = "INSERT INTO users (Username, Password) VALUES ('$Username', '$hash')";


MySQL将没有单引号的任何字符串都视为保留关键字/列名或表名。

如果查看错误,则会发现确切的问题:


  错误:未知列
  '$ 2y $ 10 $ fMTEqdQnl3E3EQrq0t2TcelmNGhghIQz0kmXPeFyWKq0BgH7BHxYm'in
  “字段列表”


这意味着hash的值将用作字段名而不是值。

09-10 08:54
查看更多