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