Вот мой код
$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){ ... }