2013-03-15 2 views
0

아래 코드를 코드 이그니 터 모델에서 사용하여 데이터베이스에서 데이터를 가져옵니다. 그러나 내 데이터베이스에는 2 Cust_Phone 필드가 있습니다. 나는 그것이 사용자가 전화 번호를 입력 할 때 전화 필드가 검색되도록 설정하고 싶습니다. 나는 내 다른 선택 쿼리 내부하나의 변수가있는 여러 필드의 MySQL 쿼리

select distinct Phone from 
(SELECT Cust_Phone1 AS Phone 
    FROM Customer 

UNION 

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

같은 SIME 일을 사용하여 MySQL의 쿼리에서이 작업을 수행 할 수있는 방법이 있다고 생각하지만, 나는 심지어 적절한 방법으로 그렇게하고 있다면 이것에 대해 이동하거나하는 방법을 확실하지 오전 .

--- 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)); 
관련 문제