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