【问题标题】:How to check posted value already exist in db or not?如何检查数据库中是否已经存在发布的值?
【发布时间】:2017-02-21 18:07:35
【问题描述】:

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

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

【问题讨论】:

  • select ... where email=$email or username=$username,基本上。因为您完全没有提供关于 db->where 的内容是什么或它是如何工作的详细信息,这就是我们所能建议的全部内容。
  • 对不起,我正在使用 codeigniter codeigniter.com @MarcB
  • 这当然是可能的,但并没有太大意义。简单地尝试立即插入是一种更有效的策略。如果您的组合索引(声明为唯一)已经包含该组合,那将失败。这足以让您得出一个已经使用的用户名。这为您节省了额外的 select 语句,从而节省了时间和代码。

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

只需进行验证即可轻松检查数据库中已存在的用户/电子邮件

[
'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] 其中 login 是表名,username 是直接在数据库中查看并检查唯一值的列

更多信息请到CI

【讨论】:

    【解决方案2】:

    如果你想检查用户名是否存在,你可以试试下面的代码 sn-p

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

    【讨论】:

    • 您好,我想知道,如何检查是否有人将电子邮件地址作为用户名发布以及如何使它们有效?
    • 如果用户通过相同的$username 发布电子邮件或用户名,那么如何检查它是否有效或存在?
    • 您能否提供两个$username 的有效值示例?如果用户存在则返回函数?如果您可以在问题中提供更多详细信息,以便我们更好地回答并提供示例。
    • EMAIL IS NOT NULL 的任何替代品?我在行中有email,所以我应该使用->where('email') 吗?
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-15
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      相关资源
      最近更新 更多