Я писал класс обработчика базы данных на PHP с использованием класса mysqli и подготовленных операторов. Я пытался распечатать результат. Это не сработало сразу, поэтому я решил сделать некоторую отладку. Я попытался использовать метод 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
Может кто-нибудь сказать мне, почему это так?