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