- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在 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/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!