我有一个输入文本字段,用户可以输入名字,姓氏,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;
}
答案 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会自动为您解除查询,这也是一种很好的做法。