为了账号安全,请及时绑定邮箱和手机立即绑定

PHP MYSQL 连接

PHP MYSQL 连接

PHP
一只名叫tom的猫 2023-10-22 21:41:24
我正在为一群当地企业做一些志愿工作,在新冠疫情期间为弱势群体提供食物。订单示例:Order No |  Customer Name | Address | Quantity | Item Name | Notes=================================================== #1234     |     Freda Smith      |3 High St   |      1     |   Loaf Bread  | Wholemeal  #1234     |     Freda Smith      |3 High St   |      2     |   500ml Milk  | Skimmed #1234     |     Freda Smith      |3 High St   |      1     |   Tea         | Eng. Breakfast我需要将订单号 #1234 的所有详细信息打印到一张票上,如下所示:#1234, Freda Smith, 3 High St     1 X Loaf Bread, Wholemeal   2 X 500ml Milk, skimmed  1 X Tea, Eng. Breakfast我已经玩过CONCATandCONCAT_GROUP并试图通过将SELECTHTML 格式分离来找出答案,但无法得到我需要的东西。我很接近,但没有雪茄!编辑:SELECT IS:             $sql =    "SELECT id,                       Order_Number,                        Full_Name,                       Address,                       Time_To_Deliver,                CONCAT(Quantity, Item_Name, Notes)                FROM orders                CONCAT_GROUP BY Order_Number";                                $users = $mysqli->query($sql);            while($user = $users->fetch_assoc()){
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

您当前的设计有冗余数据,您应该通过维护订单和订单项目的单独表来标准化您的数据库结构,您还可以添加客户表。


根据您当前的设计,您可以循环遍历所有行并有条件地显示每个订单号。只有一次。


select id,

    order_number,

    full_name,

    address,

    time_to_deliver,

    quantity,

    item_name,

    notes

from orders

order by order_number asc

Hereorder by子句很重要,这样您将获得每个订单的有序项目列表。一旦获得查询的所有结果,您就可以循环遍历数据


$currentParent = false;

while ($orderItem = $result->fetch_assoc()) {

   if ($currentParent != $orderItem['order_number']) {

        // display common detail of each order here

        echo '<h1>' . $orderItem['order_number'] .' '. $orderItem['full_name'] .' '. $orderItem['address']'</h1>';

        $currentParent = $orderItem['order_number'];

    }

    echo '<p>' . $orderItem['quantity'] .' '. $orderItem['item_name'] . ' '. $orderItem['notes'] .'</p>'; // here list rest of the information of order iterms 

    ...     

}

生成的标记将类似于


<h1>#1234, Freda Smith, 3 High St</h1>

    <p>1 X Loaf Bread, Wholemeal</p>

    <p>2 X 500ml Milk, skimmed </p>

<h1>#1235, Freda Smith, 3 High St</h1>

    <p>1 X Tea, Eng. Breakfast</p>

//....

虽然您可以直接在数据库级别使用聚合(请参阅 参考资料),但它具有字符限制的限制,可以调整该限制,但当您可以在应用程序层处理此类情况时,这不是一个好方法group_concatQuery for post and tags in same query


查看完整回答
反对 回复 2023-10-22
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信