php pdo where子句

时间:2014-02-07 01:25:50

标签: 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)。

请帮助我们!

3 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

where子句中的Ordernumber如果存在于多个表中,则应具有表前缀

答案 2 :(得分:0)

试试这个

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

然后在哪里:ordernumber是$ orderNumber

然后执行