php - 选择多个表只在一个表中工作

标签 php mysql

我正在尝试连接四个表。 order_historyorders_listinfistall_orderdelivery_orders。当我将代码运行到 order_history 表中时,结果如我所料。但是,当我将代码运行到网页中时,它只会从 order_history 表中选择值。

注意:我将代码运行到 order_history 表中的意思是当我输入 phpMyAdmin 并转到 order_history 表并在那里运行 SQL 时我有的 SQL 代码。

<?php
include ("config.php");
$results = $mysqli->query
("
    SELECT              orders_history.transaction_id,
                        orders_history.items,
                        orders_history.quantity,
                        orders_history.one_product_price,

                        orders_list.status,
                        orders_list.invoices,
                        orders_list.payment_method,
                        orders_list.order_method,

                        infistall_order.address,

                        delivery_orders.address,
                        delivery_orders.service,
                        delivery_orders.cost,
                        delivery_orders.city

    FROM                orders_history

    LEFT JOIN           orders_list
    ON                  orders_history.transaction_id = orders_list.transaction_id

    LEFT JOIN           infistall_order
    ON                  orders_history.transaction_id = infistall_order.transaction_id

    LEFT JOIN           delivery_orders
    ON                  orders_history.transaction_id = delivery_orders.transaction_id

    WHERE               orders_list.customer_name = 'Klaudia'"      
);

实际上,我正在尝试根据 transaction_id 从所有表中的所有列中收集信息。

$orders = array();     
$html = '';     
if ($results) {
    while($obj = $results->fetch_object()) {
        $orders[$obj->transaction_id][$obj->items] = array('quantity' => $obj->quantity, 'invoices' => $obj->one_product_price);
    }

    $html .= '<table width="70%"><tr>';
    $html .= '<td>items</td>';
    $html .= '<td>quantity</td>';
    $html .= '<td>one_product_price</td>';
    $html .= '<td>status</td>';
    $html .= '<td>invoices</td>';
    $html .= '<td>payment_method</td>';
    $html .= '<td>order_method</td>';
    $html .= '<td>address</td>';
    $html .= '<td>service</td>';
    $html .= '<td>cost</td>';
    $html .= '<td>city</td></tr>';
    foreach ($orders AS $order_id => $order) {
        $html .= '<tbody><tr><td rowspan="' . count($order) . '">' . $order_id . '</td>';
        $row = 1;
        foreach ($order AS $item => $data) {
            if ($row > 1) { $html .= '</tr><tr>'; }
            $html .= '<td>' . $item . '</td>';
            $html .= '<td>' . $data['items'] . '</td>';
            $html .= '<td>' . $data['quantity'] . '</td>';
            $html .= '<td>' . $data['one_product_price'] . '</td>';
            $html .= '<td>' . $data['status'] . '</td>';
            $html .= '<td>' . $data['invoices'] . '</td>';
            $html .= '<td>' . $data['payment_method'] . '</td>';
            $html .= '<td>' . $data['order_method'] . '</td>';
            $html .= '<td>' . $data['address'] . '</td>';
            $html .= '<td>' . $data['service'] . '</td>';
            $html .= '<td>' . $data['cost'] . '</td>';
            $html .= '<td>' . $data['city'] . '</td>';
            $row++;
        }
        $html .= '</tr><tbody>';
    }
    $html .= '</table>';
} 
echo $html;
?>

最佳答案

在你的循环中:

    while($obj = $results->fetch_object()) {
        $orders[$obj->transaction_id][$obj->items] = array(
            'quantity' => $obj->quantity, 
            'invoices' => $obj->one_product_price
        );
    }

您可以将其更改为:

    while($obj = $results->fetch_object()) {
        $orders[$obj->transaction_id][$obj->items][] = array(
            'quantity' => $obj->quantity, 
            'invoices' => $obj->one_product_price
        );
    }

它将防止数据从一个替换为另一个,数组上的 [] 标志使数组变为动态,键将从 0 开始计数,并随着您的增加而递增 1向该数组中添加更多数据。

关于php - 选择多个表只在一个表中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26740677/

相关文章:

mysql - 为简单的多语言 CMS 设计数据库

mysql - Easy DB Web 前端

php - 如何使用 jQuery 上传图片?

PHP 更新从数据库中选择标签

javascript - 在 WordPress 中创建粘性社交栏

php - 从 cron 运行 PHP 脚本

mysql - 无法让 mysql_insert_id 工作,无法在任何地方找到答案

mysql - 与 MySQL 匹配字符串的问题

php - Zend框架;让 Controller 使用不同的查看器

php - 在 php 表单中选择数据类型