php pdo where子句
我有以下代码用于从订单号匹配的多个表中进行选择php pdo where子句,php,pdo,Php,Pdo,我有以下代码用于从订单号匹配的多个表中进行选择 $orderNumber = $_GET['orderNumber']; $sql = $db->prepare(" SELECT * from `KC_Orders` INNER JOIN `KC_Paymen
$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\u dump($orderInfo)代码>返回:数组(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)$\u GET['orderNumber']
那么,其中:ordernumber是$ordernumber
然后执行仍然返回array(0){}
您的查询失败了,您没有费心检查失败,也没有打开pdo的异常模式。@MarcB然后告诉我如何执行。echo$orderNumber代码>在运行$sql->execute()之前
那么您得到了预期的结果吗?是的,得到了订单号。因此,如果您接受查询并在MySQL WorkBench或PHPMyAdmin上运行它,然后手动用订单号替换:orderNumber
,那么您得到了什么?尝试上面的内容或检查PDO语句的bindparam方法,然后调用execute