如何检查发布的值是否已经存在于数据库中?

How to check posted value already exist in db or not?

我想检查发布的用户名是否存在于带有电子邮件地址的数据库中。 如何检查?

public function check_all($username) 
        {
            $check = $this->db->where("username","email", $username)->get("users");
            if($check->num_rows() > 0) {
                return false;
            } else {
                return true;
            }
        }

有 3 种方法。方法 1,执行 2 个查询,第一个检查它是否已经存在,第二个查询如果第一个找到零个匹配则执行插入。

方法 2,使用 insert ignore 语法,因此重复插入静默失败。

方法 3,使用 ON DUPLICATE KEY UPDATE 语法更新条目的列,如果该条目尚不存在则将被插入。

如果您想检查用户名是否存在,您可以尝试以下代码片段

public function check_all($username) 
        {
            $results = $this->db->select('USERNAME')
                               ->from('USERS')
                               ->where('USERNAME', $username)
                               ->get();

            if($results->num_rows() > 0)
            {
              //The user exist
              return true;
            } else {
                return false;
            }
        }

如果您想检查用户是否有电子邮件地址,您可以这样做

public function check_all($username) 
        {
            $results = $this->db->select('USERNAME')
                                ->from('USERS')
                                ->where('USERNAME', $username)
                                ->where('EMAIL IS NOT NULL')
                                ->get();

            if($results->num_rows() > 0)
            {
              //The user has an email
              return true;
            } else {
                return false;
            }
        }

只需验证即可,检查数据库中已存在的用户/电子邮件非常简单

[
'field' => 'username',
'label' => 'User Name',
'rules' =>'trim|required|is_unique[login.username],
                        'errors' =>array('is_unique' => 'The %s is already  taken')                                  

]

此处,is_unique[login.username] 其中登录名是 table 名称和用户名是直接在数据库中查看并检查唯一值的列

如需更多信息,请访问 CI