2013-03-15 5 views
0

Я использую код, приведенный ниже, в модели кода Igniter, чтобы извлекать данные из базы данных. Однако у моей базы данных есть 2 поля Cust_Phone. Я хотел бы настроить его так, чтобы, когда пользователь вводит число телефонных полей, поиск выполняется. Я думаю, что есть способ сделать это в запросе тузд используя Šime вещь, какMySQL Запрос нескольких полей с одной переменной

select distinct Phone from 
(SELECT Cust_Phone1 AS Phone 
    FROM Customer 

UNION 

SELECT Cust_Phone2 AS Phone 
    FROM Customer) as t where Phone <> '' 

Внутри моего другого запроса на выборку, но я не уверен, как идти об этом или если я даже делать это надлежащим образом ,

--- CodeIgniter Модель Функция ---

public function customerQuery($First,$Last,$Zip,$Phone) { 
    $sql = "SELECT * FROM Customer WHERE Cust_First LIKE ? AND Cust_Last LIKE ? AND Cust_Zip LIKE ? AND Cust_Phone1 Like ?"; 
    if($First == null || $First == '') { 
     $First = '%'; 
    }else{ 
     $First = '%' . $First . '%'; 
    } 
    if($Last == null || $Last == '') { 
     $Last = '%'; 
    }else{ 
     $Last = '%' . $Last . '%'; 
    } 
    if($Zip == null || $Zip == '') { 
     $Zip = '%'; 
    }else{ 
     $Zip = '%' . $Zip . '%'; 
    } 
    if($Phone == null || $Phone == '') { 
     $Phone = '%'; 
    }else{ 
     $Phone = '%' . $Phone . '%'; 
    } 
    $query = $this->db->query($sql, array($First,$Last,$Zip,$Phone)); 
    return $query->result(); 
} 

ответ

1

Попробуйте это:

$sql = "SELECT * FROM Customer WHERE Cust_First LIKE ? AND Cust_Last LIKE ? AND Cust_Zip LIKE ? AND (Cust_Phone1 LIKE ? OR Cust_Phone2 LIKE ?)"; 
... 
... 
if($Phone == null || $Phone == '') { 
    $Phone = '%'; 
}else{ 
    $Phone = '%' . $Phone . '%'; 
} 
$query = $this->db->query($sql, array($First,$Last,$Zip,$Phone,$Phone)); 
0

Вы можете проверить оба телефона поля, как так ...

$sql = "SELECT * FROM Customer WHERE Cust_First LIKE ? AND Cust_Last LIKE ? AND Cust_Zip LIKE ? AND (Cust_Phone1 Like ? OR Cust_Phone2 Like ?)"; 

... 

$query = $this->db->query($sql, array($First,$Last,$Zip,$Phone,$Phone)); 
Смежные вопросы