2014-02-07 76 views
0

我有以下代碼從多個表中選擇訂單號匹配。php pdo其中子句

$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字段。如果我把WHERE部分拿出來,它會工作得很好,除了它不僅返回每一行。 (obviosly)。

請幫助我們!

+0

查詢失敗,你沒有打擾檢查失敗,或打開PDO的異常模式。 –

+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

ORDERNUMBER在where子句中應該有表前綴,如果它存在於多個表

0

試試這個

$ ORDERNUMBER =(INT)$ _ GET [ '訂單號碼'] ;

又在哪裏:訂單號碼放在$ ORDERNUMBER

然後執行

+0

嘗試上面的東西或檢出pdostatement的bindparam方法,然後調用execute – Nihat