繁体   English   中英

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

[英]How to check if a data exist in database in PHP? (MULTIPLE)

我有一个带有 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.";
}

我想做的事情是检查“电子邮件”和“昵称”是否存在于数据库中。 我怎样才能做到这一点?

尝试这个,

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

你不应该使用普通的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'
    );



$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
    }
}
  1. 使用准备好的语句。 并且 mysql_* 已被弃用

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

$result = $conn->query($sql);
if ($result->num_rows > 0) {
  print_r($result);
} else {
  echo "0 results";
}
// 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

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

if(num_rows > 0)
//found

像这样的事情,我不记得要对受影响的行进行计数的MySQL函数,您必须进行查找。

扩展 Nouphal 所说的内容。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM