2016-07-25 8 views
0

を照会します。 mysqliのためにPDOは、私はmysqlデータベーステーブルの列全体を選択したいのですが、値が設定されていない場合にのみ、検索列全体

しかし私は、PDOクエリで、それは動作しません、それは文字列にすることなく、列の名前を等しくなるように値を設定しているでしょうか?

私は次があります。

$stmt = $this->_db->prepare('SELECT BookDate, DepDate, BkngVal, Channel, Market, Region, MappedType, calc_ExpMargin FROM sales 
WHERE MappedType = :tailormade AND Region = :region AND MappedType = :type AND Channel = :channel AND BookDate <= :firstDate AND BookDate >= :secondDate'); 
$stmt->execute(array(
    'tailormade' => $tailormade, 
    'region' => $region, 
    'type' => $type, 
    'channel' => $channel, 
    'firstDate' => $date1, 
    'secondDate' => $date2 
)); 

は今、変数はすべて$の領域を除い設定されていることを言うことができます。その場合は、regionオプションを使用してすべてのオプションを検索して、region列全体を検索する必要があります。

これは可能ですか?

私は質問が理にかなって願っています。

+0

はい、節が – Drew

+0

可能ですクエリ自体はかなりあるべきmysqliとpdoから独立しています。 mysqliで作業コードを表示できるので、何か違うことをしているかどうか確認できますか? – Philipp

+0

あなたのアレイをまとめる。 var_dumpします。ときに疑問に、あなたは[この](http://stackoverflow.com/a/38394479)を経由して送信されている残虐行為を参照してください。それはちょうど101 – Drew

答えて

0

私はあなたが時々クエリから検索条件を省略したい理解として、あなたはこのようにそれを行うことができます。

SELECT 
    BookDate, 
    DepDate, 
    BkngVal, 
    Channel, 
    Market, 
    Region, 
    MappedType, 
    calc_ExpMargin 
FROM 
    sales 
WHERE (MappedType = :tailormade OR :tailormade IS NULL) 
    AND (Region = :region OR :region IS NULL) 
    AND (Channel = :channel OR :region IS NULL) 
    AND (BookDate <= :firstDate OR :firstDate IS NULL) 
    AND (BookDate >= :secondDate OR :secondDate IS NULL) 

はまた、あなたが1列のでAND句を使用する場合に問題となり2回使用MappedTypeを、持っていました同時に2つの異なる値を持つことはできません。だから私は1つを取り除いた。とにかく私はそれを行う方法の例を与えます。

また、あなたはそれを省略したい場合はnull値に任意のパラメータを設定することを忘れない - これは、与えられた例のためのあなたの関数呼び出しになります

getDataUK('FIT', NULL, 'TRADE', 'UK', '2016-01-01', '2016-01-07'); 
+0

はそんなにジョージありがとうデバッグ、ロケット科学ではありません。完全に働い – Andrew

+0

は)):)あなたを助けるために喜ん@Andrewようこそ –

関連する問題