2015-03-28 2 views
1

У меня есть простой SQL-запрос:MYSQL Подготовленные заявления Выберите row_count

$stmt = $db_main->prepare("SELECT id FROM user WHERE username=? AND mail=? LIMIT 1"); 
$stmt->bind_param('ss', $username, $mail); 
$stmt->execute(); 

И я хочу знать, если он нашел пользователя. Поэтому я хочу подсчитать найденные строки. Я уже пытался использовать rowCount (небезопасно для SELECT) или num_rows или просто ищет, если идентификатор результата является числовым (чего бы не было, я надеялся ...)

Должен быть простой способ считать выбранную строку, не так ли?

ответ

3

Проверить количество возвращаемых строк с:

$stmt->num_rows; 

Проверьте, например this site.

p.s.: добавлено в вопрос в комментарии: используйте fetch(), чтобы получить следующую запись.

... 
$stmt->execute(); 
$stmt->bind_result($user_id); // access id 
$stmt->store_result();  // optional: buffering (see below) 

if ($data = $stmt->fetch()) { 
    do { 
     print("Id: " . $user_id); 

    } while ($data = $stmt->fetch()); 

} else { 
    echo 'No records found.'; 
} 

Что касается store_result() из documentation: «Вы должны вызвать mysqli_stmt_store_result() для каждого запроса ..., если и только если вы хотите, чтобы буфер полного набора результатов клиента ...»

+0

Ну спасибо за ваш быстрый ответ, но я до сих пор не понимаю:/ Что есть сейчас: \t $ STMT = $ db_main-> подготовить ("SELECT ID FROM пользователя, где имя пользователя = И почта? =? LIMIT 1 "); \t $ stmt-> bind_param ('ss', $ username, $ mail); \t $ stmt-> execute(); \t \t \t print ("num:". $ Stmt-> num_rows); \t $ stmt-> close(); И работает num_rows, но как мне получить идентификатор сейчас? – GURKE

+0

См. Обновление выше: вы можете использовать 'fetch()' – Trinimon

+0

С вашим кодом я получаю: «Не удается получить доступ к пустому свойству» для строки: print («Id:». $ Stmt -> $ data ['id']); Если i print_r ($ data), я просто получаю '1' – GURKE

Смежные вопросы