我有以下代码,用于从订单号匹配的多个表中进行选择。
$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 :(得分: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
然后执行