MySQLi num_rows возвращает 0

Вот мой код

$stmt = $conn->mysqli->stmt_init(); $stmt = $conn->mysqli->prepare('SELECT Username, EmailVerified, Blocked FROM user WHERE Email = ? AND SLANumber = ? AND Password = ?'); $stmt->bind_param('ssb', $_POST['EmailID'], $_POST['SLANumber'], $_POST['Password']); $stmt->execute(); $stmt->store_result(); $result = $stmt->get_result(); if($result->num_rows == 0){ echo 'No rows found'; } else{ // Continue processing here ..... } 

Код всегда перекликается с No rows found . Через день или два он работал нормально.

Как и ожидалось, запуск запроса напрямую дает желаемый результат.

Что не так с кодом?

num_rows – это свойство mysqli_stmt , а не ресурса результата. Поэтому вы должны делать:

 $result = $stmt->get_result(); // Also check strict comparison against int 0, // to avoid incorrect equality with boolean FALSE if($stmt->num_rows === 0){ echo 'No rows found'; } 

Не используйте файлы store_result и get_result вместе в одном выражении.

Используйте метод store_result с параметрами «num_rows», «bind_result» и «fetch».

Для метода get_result используйте «affected_rows» и «fetch_array». Вы все равно можете использовать свойство «num_rows» в методе get_result дохода, как показано ниже.

 $stmt->execute(); // $stmt->store_result(); $result = $stmt->get_result(); if(result->num_rows == 0){ ... } 

ИЛИ

 $stmt->execute(); // $stmt->store_result(); $result = $stmt->get_result(); if($stmt->affected_rows == 0){ ... }