调试mySQLi预处理语句 - >电子邮件找不到

时间:2013-12-08 18:42:54

标签: php mysql email mysqli

我尝试实现一个注册表单,如果用户已经注册了某个电子邮件,请尝试通过php和jQuery进行检查。

这是我的代码:

if(endsWith($email, 'domain.tld'))
{
    $result = $database->prepare("SELECT id FROM users WHERE email LIKE ?");
    $result->bind_param('s', $email);
    //echo $email;
    $result->execute();
    //echo $result->execute();
    //echo $result->num_rows;
    //exit();

    if($result->num_rows == 0)
    {
        echo'ok';
    }
    else {
        echo 'duplicate';
    }
    $result->close();
}
else {
    echo 'validation failed';
}

我使用了注释的echos和exit()来调试我的代码。问题是数据库保存用户user@domain.tld,脚本在echo“user@domain.tld10”中显示我。因此语句执行成功但没有返回任何行。如果我执行声明

SELECT id FROM users WHERE email LIKE "user@domain.tld"

我得到了id(在这种情况下为11)返回。

我的问题是,如何更好地调试这个PHP脚本,最大的问题是,为什么我的scipt不能正常工作?

提前非常感谢!

1 个答案:

答案 0 :(得分:1)

在num_rows之前使用

  $result->store_result();
  

mysqli_stmt_num_rows()的使用取决于您是否使用过   mysqli_stmt_store_result()缓冲整个结果集   陈述句柄。

Docs