【问题标题】:PHP prepared statements - check if a value already existsPHP 准备好的语句 - 检查一个值是否已经存在
【发布时间】:2013-10-02 10:38:16
【问题描述】:

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

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

【问题讨论】:

  • 您确定数据库中存在的电子邮件大小写完全相同吗?尝试使用不区分大小写的比较:WHERE lcase(email)=lcase(?)
  • 是的,我很确定,两者都是小写的。我试过你的解决方案。它没有工作:(

标签: php mysqli prepared-statement


【解决方案1】:

您需要致电$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;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 谢谢。也解决了我的问题:)
    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2014-12-16
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多