База данных SQLite связана с моим PHP -Script, но подготовленный оператор не предоставит мне необходимых данных - PullRequest
0 голосов
/ 18 июня 2020
    $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>

1 Ответ

0 голосов
/ 18 июня 2020

$smt - объект PDO :: Statement. Метод query принимает строку в качестве параметра. Для выполнения подготовленного оператора используйте PDOStatement метод выполнения . Чтобы получить результаты из (выполненного) оператора, используйте один из методов fetch .

Вы не должны заключать именованные параметры (например, :name) в кавычки.

...