2014-02-07 3 views
0

주문 번호가 일치하는 여러 테이블 중에서 선택할 수있는 다음 코드가 있습니다.php pdo where 절

$orderNumber = $_GET['orderNumber']; 

$sql = $db->prepare(" 
        SELECT 
         * 
        from `KC_Orders` 
         INNER JOIN 
          `KC_Payments` 
          on KC_Orders.orderNumber = KC_Payments.orderNumber 
         INNER JOIN 
          `KC_OrderStatus` 
          on KC_Orders.orderNumber = KC_OrderStatus.orderNumber 
         INNER JOIN 
          `KC_Statuses` 
          on KC_OrderStatus.statusID = KC_Statuses.statusID 
        WHERE 
         orderNumber= :orderNumber"); 

$sql->execute(array(':orderNumber' => $orderNumber)); 
$orderInfo = $sql->fetchAll(); 

지금 나는 그것을 반환 var_dump($orderInfo);array(0) { } 잘못 무엇입니까? 모든 테이블은 그 안에 동일한 $orderNumber 필드를 포함합니다. 만약 내가 어디서 나간다면 모든 행이 반환되는 것을 제외하고는 잘 작동한다. (obviosly).

도와주세요.

+0

실행 $ 주문 번호를

을 배치됩니다. –

+0

@MarcB 그럼 어떻게 보여줘. – user3271851

+0

'$ sql-> execute();'을 실행하기 전에'echo $ orderNumber;'를 실행하면 예상 결과를 얻으실 수 있습니까? – MonkeyZeus

답변

0

OrderNumber의 출처와 *의 출처를 지정해야합니다 (어떤 표). 그래서이 새로운 코드 시도 :

$sql = $db->prepare("SELECT KC_Orders.* from `KC_Orders` INNER JOIN `KC_Payments` on KC_Payments.orderNumber = KC_Orders.orderNumber INNER JOIN `KC_OrderStatus` on KC_OrderStatus.orderNumber = KC_Order.orderNumber INNER JOIN `KC_Statuses` on KC_Statuses.statusID = KC_OrderStatus.statusID WHERE KC_Orders.orderNumber= :orderNumber"); 
+0

여전히'array (0) {}'를 반환합니다 – user3271851

0

주문 번호를에서이

0

$ 주문 번호 = (int)를 시도 여러 테이블에있는 경우 절은 테이블 접두사가해야하는 위치 $ _ GET [ '주문 번호'] ;

그럼 여기서 주문 번호는 다음 쿼리에 실패하고 실패를 확인 귀찮게하지 않았거나 PDO의 예외 모드 켜기

+0

위의 내용을 시도하거나 pdostatement의 bindparam 메소드를 확인한 다음 execute를 호출하십시오 – Nihat