2016-03-05 2 views
0

Итак, у меня есть подготовленное заявление, что я успешно подготовленный, связанный, и выполняется:PHP get_result() возвращает пустой результирующий набор

SELECT * FROM users WHERE email = ? AND pass = SHA1(?) 

Похоже, одна строка возвращается, как и ожидалось. Однако почему переменная $ result пуста, когда я звоню @$stmt->get_result()? Заранее спасибо.

$num_rows = mysqli_num_rows($stmt->get_result()); 

if ($num_rows == 1) { 

    // Fetch the result set 
    $result = $stmt->get_result(); 

    //if result empty echo false 
    if(empty($result)) { 
     echo "result is empty"; 
    } 
} 
+2

Глупый вопрос, но вы называете 'get_result()' в начале вашего кода, а затем вызвать его снова внутри, если заявление - вы уверены, что он вернется, что вы ожидая второй раз это называется? – andrewsi

+1

Попробуйте 'fetch_array()' – devpro

ответ

1

Просто поставить два замечания вместе и разработать Litte ....

<?php 
$result = $stmt->get_result(); 
$num_rows = mysqli_num_rows($result); 

if ($num_rows == 1) { 
    // already fetched the mysqli_result 
    // now lets fetch the one record from that result set 
    $row = $result->fetch_assoc(); 
    // ....do something with row 
} 
else { 
    // either 0 ...or more than 1 row 
    foo(); 
} 

Но вы можете даже избавиться от вызова mysqli_num_rows() (так оно и работает в случае unbuffered queries)

$result = $stmt->get_result(); 
$row = $result->fetch_assoc(); 
if (!$row) { 
    // no such record 
    foo(); 
} 
else { 
    // ....do something with row 

    // might want to check whether there are more matching records 
    // given the context there shouldn't, but ... 
} 
Смежные вопросы