0

私はCodeIgniterモデルで以下のコードを使用して、データベースからデータをプルしています。ただし、私のデータベースには2つのCust_Phoneフィールドがあります。ユーザーが番号を入力したときに電話フィールドが検索されるように設定したいと思います。私は、次のようなsimeを使用してmysqlクエリでこれを行う方法があると思います

select distinct Phone from 
(SELECT Cust_Phone1 AS Phone 
  FROM Customer

UNION

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

私の他のselectクエリの内部ですが、これをどのように実行するか、または適切な方法で実行しているかどうかがわかりません。

---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();
}
4

2 に答える 2

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));
于 2013-03-15T17:13:01.977 に答える
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));
于 2013-03-15T17:12:43.750 に答える