Mysqli_num_row无法正确生成数据库行

时间:2019-04-11 06:58:32

标签: php

我正在尝试在数据库中获取电子邮件行,并且使用查询,以便可以验证数据库中的电子邮件并使用了代码

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)

enter image description here

但是我注意到,每当我插入不在数据库中的电子邮件时,它们仍然会显示“是”

1 个答案:

答案 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();