CodeIgniter DB并获取两个值

时间:2013-05-23 21:18:54

标签: php codeigniter if-statement

我有一个输入文本字段,用户可以输入名字,姓氏,ID,电子邮件或电话号码,它将获得其余的用户信息。但是,当用户尝试输入像Jerry Smith这样的名字和姓氏时(这已经发生了很多)我得到一个空值。

如果用户同时输入名字和姓氏,它将返回此人而非空。我可以这样做。

这是我的代码......

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

为什么不使用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会自动为您解除查询,这也是一种很好的做法。