我正在尝试在数据库中获取电子邮件行,并且使用查询,以便可以验证数据库中的电子邮件并使用了代码
if (isset($_POST['submit'])) {
$num = 1;
$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = '';
$DB_NAME = 'user_managment';
$connection = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
$query = mysqli_query($connection, "SELECT count(id) FROM users WHERE email = 'user@gmail.com'");
$result = mysqli_num_rows($query) == $num;
if ($result){
echo 'Yes';
}else{
echo 'No';
}
}
我的数据库在这里,我只有一封电子邮件(alex@gmail.com)
但是我注意到,每当我插入不在数据库中的电子邮件时,它们仍然会显示“是”
答案 0 :(得分:1)
那是因为您执行COUNT(*)
,这将始终导致一条记录。
更好的解决方案是:
$conn = new mysqli($servername, $username, $password, $dbname);
$stmt = $conn->prepare("SELECT email FROM users WHERE email=?");
$stmt->bind_param("s", $email);
$result = $stmt->execute();
if ($result->num_rows == 1) {
echo "Yes";
} else {
echo "No";
}
$stmt->close();
$conn->close();