当前位置: 首页 > 知识库问答 >
问题:

为什么准备好的语句似乎不能(再次)绑定结果?

上官英哲
2023-03-14

我是PHP/MySQL新手。我正在进行身份验证,但我的代码不允许我进入正确的页面。以下是我的资料:

    <?php
$username = null;
$password = null;

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    require_once('database.php');

    if(!empty($_POST["username"]) && !empty($_POST["password"])) {
        $username = $_POST["username"];
        $password = $_POST["password"];

        $query = $connection->prepare("SELECT user_id FROM users WHERE user_login = ? and user_password = PASSWORD(?)");
        $query->bind_param("ss", $username, $password);
        $query->execute();
        $query->bind_result($userid);
        $query->fetch();
        $query->close();

        if(!empty($userid)) {
// Stuff happens
} else {
// goes back to the login page

此时,$userid似乎是空的,因为我一直回到登录页面。database.php只是连接,我已经确定这是可以的。我还确认了表单正确提交了$_POST[“username”]和$_POST[“password”],上面的代码创建了$username和$password。我可以附和这些以看到正确的结果。数据库中的字段名与SQL语句中的字段名匹配。但由于某种原因,$userid为空。我看过其他的帖子,但我几乎不明白自己在做什么,更不用说别人在做什么或在解释什么了。我觉得这是一个很基本的东西,但是它是什么呢?

共有1个答案

司空鸿禧
2023-03-14

为什么那个密码是()?

    $query = $connection->prepare("SELECT user_id FROM users WHERE user_login = ? and user_password = ?");
    $query->bind_param("ss", $username, $password);
    $query->execute();
    $query->bind_result($userid);
    $query->fetch();
    $query->close();
 类似资料:
  • 问题内容: 我正在重新设计一个使用最小数据库的PHP驱动的网站。原始版本使用“伪准备语句”(执行引号和参数替换的PHP函数)来防止注入攻击并将数据库逻辑与页面逻辑分开。 用一个使用PDO和真正的预备语句的对象替换这些临时功能似乎很自然,但是在对它们进行阅读之后,我不太确定。PDO似乎仍然是一个好主意,但是准备好的语句的主要卖点之一是能够重用它们……我永远不会。这是我的设置: 这些语句都很简单。大多

  • 我有一个cql查询,我想执行。cql字符串如下所示: 我的应用程序在数据税驱动程序之上有两层抽象。在一个层中,我想绑定前两个参数,而在另一层中我想绑定最后一个参数。问题是,如果我绑定前两个参数,我会得到一个无法绑定另一个参数的BoundStatement。我错过了什么吗?能做到吗? 我们使用的是datastax驱动程序版本2.0.3。 谢谢,安纳托利。

  • 我想知道使用比有什么好处? 最简单的方法是: 如您所见,我可以将数据绑定到< code>preparedStatement而无需< code>boundStatements。< code>boundStatement在哪里有用?

  • Java代码如下所示: 以下是我正在使用的所有东西的版本,以供参考: