Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从具有相同id的记录显示表_Php_Sql_Mariadb - Fatal编程技术网

PHP从具有相同id的记录显示表

PHP从具有相同id的记录显示表,php,sql,mariadb,Php,Sql,Mariadb,我想返回给用户一个显示其订单的表格,但是当用户订购一个产品时,该表格是可以的,但是在订购两个产品的那一刻,他们会得到两行相同ID但不同ProductID相同总价的产品 查询$tabellardini从该电子邮件的用户处获取所有值,查询$CheckOrdini仅获取与Risultato具有相同ID和concat描述和数量的值 我的目标是可以有一个ID为1的订单,并且在Productrow 6表左侧有ProductName1/Quantity1、ProductName2/Quantity2使用GRO

我想返回给用户一个显示其订单的表格,但是当用户订购一个产品时,该表格是可以的,但是在订购两个产品的那一刻,他们会得到两行相同ID但不同ProductID相同总价的产品

查询$tabellardini从该电子邮件的用户处获取所有值,查询$CheckOrdini仅获取与Risultato具有相同ID和concat描述和数量的值

我的目标是可以有一个ID为1的订单,并且在Productrow 6表左侧有ProductName1/Quantity1、ProductName2/Quantity2

使用GROUP_CONCAT将多行中的值合并到一个列中

$TabellaOrdini = "SELECT ordini.IDOrdini, clienti.Indirizzo, clienti.Nome, clienti.Cognome, ordini.StatoConsegna,
                         prodotti.Descrizione, ordini.TotaleOrdine, GROUP_CONCAT(pacco.IDProdotti, '/', pacco.Quantita) AS Prodotto
                  FROM clienti
                  NATURAL JOIN ordini
                  JOIN pacco ON ordini.IDPacco = pacco.IDPacco
                  JOIN prodotti ON pacco.IDProdotti = prodotti.IDProdotti
                  WHERE  clienti.IDClienti = ordini.IDClienti  AND clienti.Email = '$email' ORDER BY ordini.IDOrdini
                  GROUP BY ordini.IDOdini";
也没有必要将联接分组为


您应该停止将变量直接替换到SQL中,而是使用带有bind_param的预处理语句。

您可以更好地显示订单ID、客户详细信息、日期以及所有详细产品和数量的下拉列表。这样,您就不受表格显示选项的限制。 否则,您可以将GROUP_CONCAT与ordini.IDOrdini一起使用您的OrderID,并将产品显示为product01、product02、product03,例如,对于相同的Order01

下面是具有子行的数据表的一些链接:

或者,您可以将其用于大型子产品集:


注意:请确保PHP的安全性,并尝试按照一些设计模式编写干净的代码。使用$conn->prepare查找数据库对象和绑定输入参数[https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php]

良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码,以实现您自己的利益。您可能会被要求在几周/几个月内修改此代码,最终您将感谢我。
$TabellaOrdini = "SELECT ordini.IDOrdini, clienti.Indirizzo, clienti.Nome, clienti.Cognome, ordini.StatoConsegna,
                         prodotti.Descrizione, ordini.TotaleOrdine, GROUP_CONCAT(pacco.IDProdotti, '/', pacco.Quantita) AS Prodotto
                  FROM clienti
                  NATURAL JOIN ordini
                  JOIN pacco ON ordini.IDPacco = pacco.IDPacco
                  JOIN prodotti ON pacco.IDProdotti = prodotti.IDProdotti
                  WHERE  clienti.IDClienti = ordini.IDClienti  AND clienti.Email = '$email' ORDER BY ordini.IDOrdini
                  GROUP BY ordini.IDOdini";