[英]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.