【问题标题】:CodeIgniter DB and getting two valuesCodeIgniter DB 并获得两个值
【发布时间】:2013-05-23 21:18:53
【问题描述】:

我有一个输入文本字段,用户可以输入名字、姓氏、身份证、电子邮件或电话号码,它会得到其余的用户信息。但是,当用户尝试输入像 Jerry Smith 这样的名字和姓氏时(这种情况经常发生),我得到一个空值。

如果用户同时输入名字和姓氏,我该怎么做,它将返回人而不是 null。

这是我的代码....

            //$id = 1234;
            //$phone = '555-555-5555';
            //$email = 'test@email.com';
            //$firstname = 'Jerry';
            //$lastname = 'Smith';
              $fullname = 'Jerry Smith';

            if($id || $phone || $email || $firstname || $lastname) {
                    $data = get_user_info($id, $phone, $email, $firstname, $lastname);
            }

            function get_user_info($id = null, $phone = null, $email = null, $firstname = null, $lastname = null){
            if($id) {
                    $this->db->or_where('ID', $id);
            }
            if($phone) {
                    $this->db->or_where('HomePhone', $phone);
            }
            if($email) {
                    $this->db->or_where('HomeEmail', $email);
            }
            if($firstname) {
                    $this->db->or_where('FirstName', $firstname);
            }
            if($lastname) {
                    $this->db->or_where('LastName', $lastname);
            }
            $query = $this->db->get($this->my_table);
            $member = $query->result_array();
            return $member;
    }

【问题讨论】:

  • 我假设您有,但首先我要问的是,您是否尝试过使用您知道存在的数据进行测试?有效的名字和姓氏?
  • 我假设您使用输入类 post 方法获取您的值,因此请尝试比较; $id !== FALSE
  • @rcpayan 不起作用,因为输入是字符串。因此,如果他想将“John Smith”与名字进行比较,除非名字是“John Smith”,否则他总是会得到 NULL。他需要分解输入。
  • 但他说他从表单输入中分别获得名字和姓氏,这就是我提供的原因

标签: php codeigniter if-statement


【解决方案1】:
function get_user_info($id = null, $phone = null, $email = null, $firstname = null, $lastname = null)
{
     $this->db->select('*');
     $this->db->where('ID',$id);
     $this->db->or_where('HomePhone',$phone);
     $this->db->or_where('HomeEmail',$email);
     $this->db->or_where('FirstName',$firstname);
     $this->db->or_where('LastName',$lastname);
     $query = $this->db->get($this->my_table);
     $member = $query->result_array();
     return $member;
}

【讨论】:

    【解决方案2】:

    为什么不使用explode() 将输入文本按空格分开,然后将您的if 检查移动到foreach 循环中呢?示例:

    $input = explode(' ', $input_field);
    
    foreach ($input as $i) {
        if ($i == 'first_name') //do something
        if ($i == 'last_name') //do something
    }
    

    现在您只是检查用户输入的任何内容,因此获得NULL 的几率很高。

    附带说明一下,在针对数据库运行输入之前,您可能应该进一步验证输入。尽管 CodeIgniter 会自动为您转义查询,但这是一个很好的做法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多