PHP预处理语句 - 检查值是否已存在

时间:2013-10-02 10:38:17

标签: php mysqli prepared-statement

我正在尝试检查值(电子邮件),以确定它是否已存在于数据库中。这应该使用准备好的陈述来完成。这样做的最佳方式是什么?我的解决方案就是这个(这是错误的):

$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;

即使数据库中存在电子邮件,它也始终打印出来。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

您似乎遇到了有关无缓冲结果的问题。你应该使用store_result:

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