php - 检查数据库中的大量信息

标签 php mysql

对于我的注册系统,当用户注册时,我想确保他们的用户名、电子邮件等不被占用。我有代码来检查用户名是否存在,并且我可能可以对其他内容执行相同的操作。

如何在不多次重写 block 的情况下做到这一点?

tl;dr:如何以紧凑的方式检查数据库中的更多内容?

$userquery = "SELECT * FROM users WHERE username = '$username'";
if ($result = $mysqli->query($userquery)) {
    if ($result->num_rows > 0) {
        die ("Username Already Exists.");
    }
}

最佳答案

在 where 子句中使用“OR”条件

$userquery = "SELECT * FROM users WHERE username = '$username' OR email= '$email'";
if ($result = $mysqli->query($userquery)) {
    if ($result->num_rows > 0) {
        die ("Username/Email Already Exists.");
    }
}

编辑

那么,

function doesitexist($mysqli,$table,$field,$value) {
    $userquery = "SELECT * FROM $table WHERE $field = '$value' LIMIT 1";
    if ($result = $mysqli->query($userquery)) {
        if ($result->num_rows > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        return('Error running Query');
    }

}

另一个编辑只是为了好玩。这应该在一次调用中检查一组字段和值。

$check = doesitexist($mysqli,'users',array('username'=>'bob','email'=>'someone@example.com'));

function doesitexist($mysqli,$table,$tocheck = array()) {

    if (count($tocheck)>0) {
        $where = '';
        foreach ($tocheck as $field=>$value) {
            $where .= $field." = '".addslashes($value)."' OR "; 
        }
        $where = trim($where," OR ");
        $userquery = "SELECT * FROM $table WHERE $where LIMIT 1";
        if ($result = $mysqli->query($userquery)) {
            if ($result->num_rows > 0) {
                return true;
            } else {
                return false;
            }
        } else {
            return('Error running Query');
        }
    } else {
        return("No Fields/Values to check");    
    }
}

关于php - 检查数据库中的大量信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30396304/

相关文章:

php - 如何在 symfony2 中实现带有额外字段的多对多?

php - 即使在 PHP IF.. 语句之后,选择选项仍然出现在页面上

caching - 引用不存在的文件路径和文件的 PHP fatal error

php - MySQL : Insert Exactly Same Data Multiple Rows Without PHP Loop

php - 如何在 Debian VPS 上将 PHPmyadmin 更新到 4.0.4.1

php - UTF8 character_set_server 和 DataTables 插件

javascript - Sweet Alert window.prompt 传值给服务器

php - 组织编程竞赛 - 如何编译和执行

php - 动态类或函数返回查询结果PDO

mysql - Powershell - mySQL 查询,每隔一次运行就会出错