所以我编写了一个脚本来在表格中插入电子邮件地址,但我想检查地址是否已经存在。所以我从准备好的声明开始:
$statement = $db->prepare("SELECT * FROM `signups` WHERE `signups_email`= ? ");
$statement->bind_param('s',$email);
$statement->execute();
if($statement->num_rows < 1){
$statement->close(); //Free up the SQL result
//do the inserting code
} else {
echo "Email already exists";
}
麻烦的是,($statement->num_rows < 1)
似乎总是返回true,即使我知道数据库中有电子邮件。即它没有发现该地址已经存在于数据库中。
我的连接等很好,因为//do the inserting code
位工作正常。
答案 0 :(得分:1)
查看mysqli_num_rows的文档。
返回结果集中的行数。指某东西的用途 mysqli_stmt_num_rows()取决于你是否使用过 mysqli_stmt_store_result()缓冲整个结果集 陈述句柄。
如果你使用mysqli_stmt_store_result(),mysqli_stmt_num_rows()可能是 立即打电话。
看起来你需要在检查行数之前调用store_result()。
答案 1 :(得分:0)
如果数据库中已存在电子邮件,则您的声明将失败。 if()
应为
if ($statement->num_rows == 0) {
... email does not exist, insert it
} else {
... at least one record with that email exists
}