mysqliクラスとプリペアドステートメントを使用して、PHPでデータベースハンドラークラスを作成していました。結果を印刷しようとしていました。すぐには機能しなかったので、デバッグを行うことにしました。num_rows()
クラスのメソッドを使用しようとしましたmysqli_statement
が、0が返され続けました。テストコードの一部を記述して、何が問題になっているのかを確認できるようにしました。その後、必要なデータを返すことができましたが、num_rows()
実際にデータを選択して取得している場合でも、メソッドは0を返します。コードは次のとおりです。
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if(mysqli_connect_errno())
{
die('connection failed');
}
$statement = $mysqli->stmt_init();
$query = "SELECT name FROM table WHERE id = '2000'";
if($statement->prepare($query))
{
$statement->execute();
$statement->bind_result($name);
$statement->fetch();
$statement->store_result();
echo $statement->num_rows();
echo $name;
}
else
{
echo 'prepare statement failed';
exit();
}
期待される結果は次のとおりです。
1name
そして実際の結果は次のとおりです。
0name
なぜこれなのか誰か教えてもらえますか?