如何从PHP中的多列SQL检索数据

时间:2019-04-14 14:49:45

标签: php mysql sql

我正在为此SQL苦苦挣扎,希望能够从PID列以及列出的其他两列中进行选择。

SELECT PID, BID AS BAID, SUM(Price*Quantity) AS Total 
FROM product 
INNER JOIN basket 
  ON product.PID = basket.PID 
WHERE Email = '$email'

基本上,代码可以正常执行,而无需我尝试获取“ PID”列。

在不破坏代码的情况下,我不知道要在哪里包含它。

感谢您的帮助。

我尝试过移动它,甚至将PID AS设置为新列,但似乎没有任何作用。

2 个答案:

答案 0 :(得分:0)

您想要一个篮子的总数吗?

SELECT b.BID AS BAID, SUM(p.Price * b.Quantity) AS Total
FROM product p INNER JOIN
     basket b
     ON p.PID = b.PID
WHERE b.Email = ?  -- I am guessing the `Email` is associated with the basket and not the product
GROUP BY b.BID ;

?是参数的占位符。您应该将比较值作为参数传递,而不要浪费查询字符串。

答案 1 :(得分:0)

由于PID在两个表中都存在,因此变得模棱两可(这意味着SQL并不知道应该从中选择哪个值,即使它是完全相同的值)。因此,您需要使用语法table.column指定要从中选择表的表。该表可以用别名替换(p表为productsb表为basket),这使此操作变得更容易。

在使用诸如GROUP BY之类的聚合函数时,您也应该SUM()

SELECT p.PID, p.BID AS BAID, SUM(Price*Quantity) AS Total 
FROM product AS p
INNER JOIN basket AS b
  ON p.PID = b.PID
WHERE Email = '$email'
GROUP BY b.BID;

您还应该使用准备好的语句,而不是将变量直接注入查询中,请参见How can I prevent SQL injection in PHP?