如何在PHP中检查数据库中是否存在数据?(多个)

如何在PHP中检查数据库中是否存在数据?(多个),php,mysql,database,Php,Mysql,Database,我有一份带有if声明的登记表: $query = "SELECT `username` FROM `users` WHERE `username`='$username'"; $query_run = mysql_query($query); if (mysql_num_rows($query_run)==1) { echo "Username already exist."; } 我想做的事情是检查数据库中是否存在电子邮件和昵称。 我该怎么做 使用事先准备好的陈述。mysql_*

我有一份带有if声明的登记表:

$query = "SELECT `username` FROM `users` WHERE `username`='$username'";
$query_run = mysql_query($query);

if (mysql_num_rows($query_run)==1) 
{
    echo "Username already exist.";
}
我想做的事情是检查数据库中是否存在电子邮件和昵称。 我该怎么做

使用事先准备好的陈述。mysql_*已被弃用

选择*而不是选择“用户名”将返回整行,您可以检查所有字段

试试这个

SELECT `username`, `email`, `nickname`
FROM `users`
WHERE (`username` = '$username' OR
       `email` = '$username' OR
       `nickname` = '$username' )

我假设值在用户中是唯一的,就像您所做的那样==1。否则,将==1更改为>0,并删除限制1。

扩展Nouphal所说的内容

$query = "SELECT `username` FROM `users` WHERE `username'=$username OR 'email' = $email";
您不应该使用普通的mysql\u查询

引用php.net

警告:从PHP 5.5.0开始,此扩展已被弃用,并将被删除 在将来被移除。相反,MySQLi或PDO_MySQL扩展 应该使用。另请参见MySQL:选择API指南和相关常见问题解答 了解更多信息。此功能的替代方案包括: mysqli_query PDO::query

尝试使用PDO或mysqli。 这对于防止mysql注入至关重要

下面是一个如何使用PDO执行此操作的示例

$config['db'] = array(
    'host'          => 'localhost',
    'username'      => 'username',
    'password'      => 'password',
    'dbname'        => 'dbname'
    );



$db = new PDO("mysql:host={$config['db']['host']};dbname={$config['db']['dbname']}",
              $config['db']['username'], $config['db']['password']);


$sql = "SELECT * FROM `users`";
$stmt = $db->prepare($sql);
$stmt->execute();

$users = $stmt->fetchAll()

$username = 'Bob';
$email = 'bob@gmail.com';
$nickname = 'BobTheMan';

foreach($users as $user)
{
    if($user['username'] == $username)
    {
        // there is a user by this username
    }
    if($user['email'] == $email)
    {
        // there is a user by this email
    }
    if($user['nickname'] == $nickname)
    {
        // there is a user by this nickname
    }
}

OR运算符是您的朋友我应该在哪里使用OR运算符?可能的重复项也需要对变量使用双引号这是否回答了您的问题?为什么*而不仅仅是用户名,他/她只想知道用户是否已经存在。。。阅读后,我认为他想知道这些字段是否已填充,而不是他想根据这些字段检查用户名Bhavik Shah,他还想知道如何检查数据库中是否存在电子邮件和昵称,如果他只是获取用户名,然后发电子邮件,然后昵称他将对数据库运行3个查询,而不是获取所有列,然后使用PHP循环查询1个查询。我自己解决了这个问题…:但不管怎样:清晰的代码。。。谢谢为什么*而不仅仅是用户名,他/她只想知道用户是否已经存在
$config['db'] = array(
    'host'          => 'localhost',
    'username'      => 'username',
    'password'      => 'password',
    'dbname'        => 'dbname'
    );



$db = new PDO("mysql:host={$config['db']['host']};dbname={$config['db']['dbname']}",
              $config['db']['username'], $config['db']['password']);


$sql = "SELECT * FROM `users`";
$stmt = $db->prepare($sql);
$stmt->execute();

$users = $stmt->fetchAll()

$username = 'Bob';
$email = 'bob@gmail.com';
$nickname = 'BobTheMan';

foreach($users as $user)
{
    if($user['username'] == $username)
    {
        // there is a user by this username
    }
    if($user['email'] == $email)
    {
        // there is a user by this email
    }
    if($user['nickname'] == $nickname)
    {
        // there is a user by this nickname
    }
}
$result = $conn->query($sql);
if ($result->num_rows > 0) {
  print_r($result);
} else {
  echo "0 results";
}