2016-07-25 2 views
0

값이 설정되지 않은 경우에만 mysql 데이터베이스 테이블의 전체 열을 선택하려고합니다.PDO 쿼리 전체 열 검색

mysqli의 경우 문자열을 만들지 않고 열 이름과 동일하게 값을 설정했지만 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 옵션을 사용하여 모든 옵션을 검색하려고합니다.

이것이 가능합니까?

질문이 의미가되기를 바랍니다.

+0

예,이 절은 – Drew

+0

쿼리 자체는 꽤해야 가능하다 mysqli와 pdo와는 별개로 동일하다. mysqli를 사용하여 작업 코드를 보여줄 수 있으므로 다른 것을하고 있는지 확인할 수있다. – Philipp

+0

어레이를 정리하십시오. var_dump. 의심 스럽다면 [this] (http://stackoverflow.com/a/38394479)를 통해 보내는 잔학 행위를 참조하십시오. 로켓 과학이 아니고 단지 디버깅 101 – Drew

답변

0

가끔 당신을 이해 쿼리에서 검색 조건을 생략 할, 당신은 이런 식으로 작업을 수행 할 수 있습니다 또한 당신이 MappedType 두 번 사용했다

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) 

, AND 조항 때문에 하나의 열을 사용하여 문제가 될 것이라고 동시에 두 개의 서로 다른 값을 가질 수 없습니다. 그래서 나는 그것을 제거했다. 어쨌든 나는 그것을하는 방법을 예제를 제공합니다. 또한

당신이 그것을 생략 할 경우 null 값으로 모든 매개 변수를 설정 기억 -이 주어진 예를 들어, 함수를 호출 할 수 있습니다 :

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

George 고맙습니다. 완벽하게 일했습니다 – Andrew

+0

환영합니다 @ 앤드류는 당신을 도울 수있어서 기쁩니다 :)))) –