首页 > 解决方案 > SQLite-Database 与我的 PHP 脚本连接,但准备好的语句不会给我所需的数据

问题描述

    $user = $_POST['usr'];
    $password = $_POST['pwd'];

    try {
        $conn = new PDO('sqlite:../database/gameUsers');
        $smt = $conn->prepare("SELECT * FROM user WHERE username=':name' AND password=':password'");
        $smt->bindValue(':name', $user);
        $smt->bindValue(':password', $password);
        $userCheck = $conn->query($smt);

        $feedback = $userCheck ? "OK" : "Keine Daten vorhanden";
    } catch (Exception $e) {
        $feedback = $e->getMessage();
    }

我想知道的其实很简单。第一:为什么会这样?图片到错误(请参阅代码的底部以查看根据错误“缺少”的内容)和第二个:为什么我没有返回该语句?我是否写错了(因为该数据库中有数据,我在命令提示符下使用 sqlite3 检查了它)还是因为其他原因不接受它?提前致谢。

<p>
    <form method="post" action="login.php">
        <br>Benutzername:
            <input name="usr" type="text" required>
        <br>Passwort:
            <input name="pwd" type="text" required>
        <br>Eingeloggt bleiben?:
            <input type="checkbox" name="stayLog" value="Ja"> Ja
        <br>
            <input type="submit" value="Einloggen!">
    </form>
</p>

标签: phpdatabasesqliteprepared-statement

解决方案


$smt是一个 PDO::Statement 对象。该query方法将字符串作为参数。要执行准备好的语句,请使用 PDOStatement执行方法。要从(执行的)语句中获取结果,请使用其中一种fetch 方法

不应将命名参数(例如:name)括在引号中。


推荐阅读