0

我有一个输入文本字段,用户可以输入名字、姓氏、身份证、电子邮件或电话号码,它将获得其余的用户信息。但是,当用户尝试输入像 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;
    }
4

2 回答 2

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;
}
于 2013-05-24T04:05:32.190 回答
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 会自动为您转义查询,但这是一个很好的做法。

于 2013-05-23T21:32:16.657 回答