Php 检查数据库中是否存在值

Php 检查数据库中是否存在值,php,mysql,mysqli,Php,Mysql,Mysqli,我在mysqli中有一个数据库,如下所示: |--------------|-------Users-----------|---------------| |id------------|------username---------|----------email| |1-------------|--------test-----------|-test@gmail.com| echo "First: " . User::exists("username", "testUsername"

我在mysqli中有一个数据库,如下所示:

|--------------|-------Users-----------|---------------|
|id------------|------username---------|----------email|
|1-------------|--------test-----------|-test@gmail.com|
echo "First: " . User::exists("username", "testUsername") ." | ". User::exists("email", "test@gmail.com") . "</br>";
php:

class User{
    public static function exists($dbType="",$type=""){
        $result = "SELECT * FROM Users  WHERE ".$dbType."='{$type}'";
        return (mysqli_fetch_array($result) == 1) ? 'NO' : 'YES';
    }
}
我这样检查:

|--------------|-------Users-----------|---------------|
|id------------|------username---------|----------email|
|1-------------|--------test-----------|-test@gmail.com|
echo "First: " . User::exists("username", "testUsername") ." | ". User::exists("email", "test@gmail.com") . "</br>";
echo“First:”。用户::存在(“用户名”、“测试用户名”)。“|”。用户::存在(“电子邮件”test@gmail.com") . “
”;

但问题是,即使数据库中不存在testUsername,它也只返回“NO”。

mysqli_fetch_数组($result)的结果是一个数组。如果您想知道是否有来自数据库的结果,您应该尝试计算数组的大小

试试这个:

class User{
    public static function exists($dbType="",$type=""){
         $query= "SELECT * FROM Users  WHERE ".$dbType."='{$type}'";
         $result = mysqli_query($query);
         return (sizeof(mysqli_fetch_array($result)) == 1) ? 'NO' : 'YES';
    }
}

多亏了Rajdeep Paul,您才没有执行查询。首先使用
mysqli\u query()
执行查询,然后使用
mysqli\u num\u rows()
函数检查返回的行数。应使用SELECT COUNT(*)。这会更有效。您不需要选择表中的所有字段来检查您的计数。您的
mysqli\u query()
是错误的。以过程的方式,它至少接收两个参数,第一个是连接处理程序,OP在问题中没有提到,第二个是查询。请阅读。