简体   繁体   English

php pdo where子句

[英]php pdo where clause

I have the following code for selecting from multiple tables where the order number matches. 我有以下代码,用于从订单号匹配的多个表中进行选择。

$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();

Now when I var_dump($orderInfo); 现在当我var_dump($orderInfo); it returns: array(0) { } What is wrong? 它返回: array(0) { }怎么了? All the tables include the same $orderNumber field within it. 所有表中都包含相同的$orderNumber字段。 If I take the WHERE part out it works just fine except it returns every row not just one. 如果我去掉WHERE部分,除了返回每一行而不只是返回一行之外,它都可以正常工作。 (obviosly). (很明显)。

Please help us! 请帮助我们!

You need to specify what the OrderNumber is from, and the * is from (what table). 您需要指定OrderNumber的来源, *是(什么表)的来源。 So try this new code: 因此,请尝试以下新代码:

$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应该具有表前缀

Try this 尝试这个

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

Then where :ordernumber is put $orderNumber 然后在:ordernumber放在$ orderNumber

Then execute 然后执行

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM