繁体   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