MySQLi num_rows возвращает 0 - PullRequest
0 голосов
/ 04 января 2012

Вот мой код

$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.За день или два до этого все работало нормально.

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

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

Ответы [ 2 ]

1 голос
/ 28 января 2014

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

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

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

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

OR

$stmt->execute();
// $stmt->store_result();
$result = $stmt->get_result();
if($stmt->affected_rows == 0){
  ...
}
1 голос
/ 04 января 2012

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';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...