PHP 预准备语句 - 检查值是否已存在


PHP prepared statements - check if a value already exists

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

$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,即使电子邮件已准备就绪存在于数据库中。

你需要

打电话给$getEmail->store_result();

$mysqli = connectToDB();
$getEmail = $mysqli->prepare('SELECT * FROM users WHERE email=?');
$getEmail->bind_param('s', $email);
$getEmail->execute();
$getEmail->store_result();
$countRows = $getEmail->num_rows;
print $countRows;

您似乎对未缓冲的结果有疑问。您应该使用store_result:

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