我有一个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.";
}
我想要做的是检查“电子邮件”和“昵称”(如果它们存在于数据库中)。 我怎么能这样做?
答案 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)
使用预准备语句。并且不推荐使用mysql_ *
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函数,你必须要查看它。