gpt4 book ai didi

php - 如何使用 LEFT JOIN mysql 查询轻松分割 PHP 中的结果?

转载 作者:行者123 更新时间:2023-11-29 11:37:09 25 4
gpt4 key购买 nike

我有一个查询,我试图将结果放入数组中。查询返回orderorderdetails两个表的所有数据:

SELECT orders.*, order_details.* FROM `webshop_orders` 
LEFT JOIN `order_details`
ON `orders`.`order_id` = `order_details`.`f_order_id`
WHERE `orders`.`f_site_id` = $iSite_id AND `orders`.`order_id` = $iOrder_id;";

我试图找出如何返回这些数据并将它们放入以下格式的数组中:

$aOrders = array(
0=>array(Orders.parameter1=>value, orders.parameter2=>value, orders.parameter3=>value, 'orderdetails'=>array(
array(Orderdetails.parameter1=>value, orderdetails.parameter2=>value)));

我目前将每个结果作为关联数组返回,并使用 2 个键数组根据名称手动拆分每个变量,但这似乎非常“劳动密集型”?

while($aResults = mysql_fetch_assoc($aResult)) { 
$i++;
foreach($aResults as $sKey=>$mValue){
if(in_array($sKey, $aOrderKeys){
$aOrder[$i][$sKey] = $mValue;
} else {
$aOrder[$i]['orderdetails'][$sKey] = $mValue;
}
}
}

编辑:上面的函数没有考虑多个订单详细信息,但该函数仅作为示例!

是否有更简单的方法或者我可以使用更好的查询来实现此目的?

最佳答案

您可以使用以下 while 循环来填充数组:

$data = array();
while ($row = mysql_fetch_assoc($result)) {
if (!isset($data[$row['order_id']])) {
$order = array('order_id' => $row['order_id'],
'order_date' => $row['order_date'],
/* ... */
'orderdetails' => array());
$data[$row['order_id']] = $order;
}
if (isset($row['order_details_id'])) { // or is it "!= null"? don't know...
$details = array('id' => $row['order_details_id'],
'whatever' => $row['order_details_whatever']);
$data[$row['order_id']]['orderdetails'][] = $details;
}
}

这样您就可以为一个订单拥有多个订单详细信息,它们都会添加到 ['orderdetails'] 字段中。

附加说明:

关于php - 如何使用 LEFT JOIN mysql 查询轻松分割 PHP 中的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36386010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com