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