簡體   English   中英

php pdo where子句

[英]php pdo where clause

我有以下代碼,用於從訂單號匹配的多個表中進行選擇。

$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部分,除了返回每一行而不只是返回一行之外,它都可以正常工作。 (很明顯)。

請幫助我們!

您需要指定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");

如果在多個表中存在,那么where子句中的Ordernumber應該具有表前綴

嘗試這個

$ orderNumber =(int)$ _ GET ['orderNumber'];

然后在:ordernumber放在$ orderNumber

然后執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM