gpt4 book ai didi

包含变量的 PHP 查询字符串不起作用

转载 作者:行者123 更新时间:2023-11-29 10:52:04 25 4
gpt4 key购买 nike

当我在 PHP 中使用变量构建查询字符串时,它似乎不起作用。我当前的查询是:

$u = "admin";
$hash = password_hash("password", PASSWORD_DEFAULT);
$set_login = "INSERT INTO users (username, password) VALUES ({$u}, {$hash})";

*我正在脚本中进一步执行查询

如果我将 {$u} 替换为它代表的字符串文字,并将 {$hash} 替换为密码的字符串文字,例如 密码,查询工作正常。然而,当我引入变量时,它就会崩溃。我尝试分解查询字符串并使用连接运算符:

$set_login = "INSERT INTO users (username, password) VALUES ( " . $u . ", " . $hash . ")";

这也不起作用。然后我认为这可能与哈希有关,所以我将代码修改为(用于测试):

$u = "admin";
$p = "password";
$set_login = "INSERT INTO users (username, password) VALUES ({$u}, {$p})";

这也不起作用。

最佳答案

最好的解决方案是使用 prepared statements ,非常简单。

以下是如何使用准备好的语句来做到这一点

mysqli

<?php
$u = "admin";
$hash = password_hash("password", PASSWORD_DEFAULT);
$set_login = "INSERT INTO users (username, password) VALUES (?,?)";
$query = $ConnectionString->prepare($set_login);
$query->bind_param("ss",$u,$hash);

if($query){
echo "success";
}else{

error_log("error".$ConnectionString->error);
}

?>

PDO

<?php
$u = "admin";
$hash = password_hash("password", PASSWORD_DEFAULT);

$query = $ConnectionString->prepare("INSERT INTO users (username, password) VALUES (?,?)")->execute(array($u,$hash));

if ($query) {
echo "success";
} else {

error_log("error" . $ConnectionString->errorInfo());
}

?>

一些有用的资源。

PDO Connection PDO Tutorials Mysqli Prepared

NB: AS Jay have indicated in his comment make sure your password field size in the database is at least 60 Characters

在您的查询中,问题是您没有将字符串包装在引号

您的查询应该是:

$set_login = "INSERT INTO admin (uname, upass) VALUES ('{$u}', '{$hash}')";

但这不是执行查询的最佳推荐方法,您应该使用上面使用准备好的语句的方法之一。

这就是为什么你应该: Bobby Tables

关于包含变量的 PHP 查询字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com