0

次のコードがあります。

<?php
if(!empty($_POST)){
    $db = new mysqli('localhost', 'root', '', 'verif1');
    $password = $_POST['pass'];
    $username = $_POST['user'];
        $table = "admins";
    $password = hash("sha256", $password);
    $statement = $db->prepare("SELECT COUNT(*) FROM {$table} WHERE username = ? AND password = ?");
    $statement->bind_param("ss", $username, $password);
    $statement->execute();
    $statement->bind_result($numrows);
    if($numrows == 1){
        echo "yeah correct!<br>";
    }else{
        echo "No :(<br>";
    }
}


?>

<form action="" method="POST">
    <input type="textbox" name="user">
    <br>
    <input type="password" name="pass">
        <br>
    <input type="submit">
</form>

すべてが正しいと確信しています(エラーがスローされず、何もありません)、機能しません!返されたオブジェクトを確認するために print_r() を試しましたが、これが得られました: execute() の後にこれを行います:

print_r($statement);
die();

そして、それは私にこれを与えます:

mysqli_stmt オブジェクト ( [影響を受ける行] => -1 [挿入 ID] => 0 [行数] => 0 [パラメータ数] => 2 [フィールド数] => 1 [エラー番号] => 0 [エラー] => [エラーリスト] =>配列 ( ) [sqlstate] => 00000 [id] => 1 )

4

2 に答える 2

0

If you check the documentation - http://www.php.net/manual/en/mysqli-stmt.bind-result.php you will see that you've forgotten to fetch() data

$statement->fetch();
于 2013-07-24T04:53:11.653 に答える
-1

次のコードを使用して、代わりに行数をカウントできます。$statement->bind_result($numrows);

$statement->store_result();
if ($statement->num_rows == 1)
    echo "yeah correct!<br>";
} else {
    echo "No :(<br>";
}
于 2013-07-24T04:59:53.847 に答える