2013-10-02 4 views
1

Я пытаюсь проверить значение (адрес электронной почты), чтобы определить, существует ли оно в db. Это должно быть сделано с использованием подготовленных инструкций. Каков наилучший способ сделать это? Мое решение таково (что неверно):Готовые операторы PHP - проверьте, существует ли уже существующее значение

$mysqli = connectToDB(); 
$getEmail = $mysqli->prepare('SELECT * FROM users WHERE email=?') or die('Couldn\'t check the email'); 
$getEmail->bind_param('s', $email); 
$getEmail->execute(); 
$countRows = $getEmail->num_rows; 
print $countRows; 

Он всегда распечатывает 0, даже если письмо существует в db.

+0

Вы уверены, что электронная почта существует в базе данных точно так же верхний/нижний случае? Попробуйте использовать сравнение без учета регистра: 'WHERE lcase (email) = lcase (?)' –

+0

Да, я уверен в этом, оба строчные. Я попробовал ваше решение. Это не сработало :( – Langkiller

ответ

2

Кажется, что у вас есть проблема с небуферизованным результатом. Вы должны использовать store_result:

$getEmail->execute(); 
$getEmail->store_result(); 
$countRows = $getEmail->num_rows; 
+0

спасибо, что сработало отлично. Хм, я не знаю, кто из вас был первым с ответом .. имеет значение, какой ответ я принимаю? – Langkiller

4

Вам нужно позвонить $getEmail->store_result();

$mysqli = connectToDB(); 
$getEmail = $mysqli->prepare('SELECT * FROM users WHERE email=?') or die('Couldn\'t check the email'); 
$getEmail->bind_param('s', $email); 
$getEmail->execute(); 
$getEmail->store_result(); 
$countRows = $getEmail->num_rows; 
print $countRows; 
+0

спасибо, что отлично сработало. Хм, я не знаю, кто из вас были сначала с ответом .. имеет значение, какой ответ я принимаю? – Langkiller

+0

принять ответ Рояля :) –

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