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

时间:2014-02-27 15:23:01

标签: 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.";
}

我想要做的是检查“电子邮件”和“昵称”(如果它们存在于数据库中)。 我怎么能这样做?

7 个答案:

答案 0 :(得分:2)

试试这个,

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

答案 1 :(得分:1)

你不应该使用普通的 mysql_query

引用php.net

  

警告从PHP 5.5.0开始,不推荐使用此扩展程序   将来删除。相反,MySQLi或PDO_MySQL扩展   应该使用。另请参阅MySQL:选择API指南和相关的常见问题解答   欲获得更多信息。该功能的替代方案包括:   mysqli_query()PDO :: query()

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

http://php.net/manual/en/pdo.prepared-statements.php

以下是如何使用PDO

执行此操作的示例
$config['db'] = array(
    'host'          => 'localhost',
    'username'      => 'username',
    'password'      => 'password',
    'dbname'        => 'dbname'
    );

try {

$db = new PDO("mysql:host={$config['db']['host']};dbname={$config['db']['dbname']}",
              $config['db']['username'], $config['db']['password']);
} catch(PDOException $e) {
        echo $e->getMessage();
}

$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
    }
}

答案 2 :(得分:0)

  1. 使用预准备语句。并且不推荐使用mysql_ *

  2. SELECT *而非SELECT'username'vill返回整行,您可以检查所有字段

答案 3 :(得分:0)

// sql injection friendly code! *here*
$query = "SELECT `username` FROM `users`
    WHERE '$username' IN (`username`, `email`, `nickname`) LIMIT 1;";
$query_run = mysql_query($query);
if (mysql_num_rows($query_run) == 1){
    echo "Username already exist.";
}

我假设users中的值与您== 1一样唯一。否则,请将== 1更改为> 0并删除LIMIT 1

答案 4 :(得分:0)

扩大Nouphal说的话。

$query = "SELECT `username` FROM `users` WHERE `username'=$username OR 'email' = $email";

答案 5 :(得分:0)

$result = $conn->query($sql);
if ($result->num_rows > 0) {
  print_r($result);
} else {
  echo "0 results";
}

答案 6 :(得分:-1)

$q = "SELECT id WHERE 'username' = $username"

if(num_rows > 0)
//found

类似的东西,我不记得计算受影响的行的MySQL函数,你必须要查看它。