如何使用PHP和MySQL从特定客户中选择所有订单?

时间:2018-01-14 02:51:31

标签: php mysql database pdo

我在尝试选择访问网站的给定客户端的所有订单并在屏幕上显示它们时遇到问题。问题是正在返回的数组具有三倍的订单值(每个订单出现3次而不是一次)。

$query = "SELECT orders.orderID, orders.date, products.name, products.price
   FROM ((orders
   INNER JOIN customers ON orders.userID = ?)
   INNER JOIN products ON orders.productID = products.productID)";

   $stm = $pdo->prepare($query);
   $stm->execute([$_SESSION['id']]); // The ID of the customer using the website
   $orders_array = $stm->fetchAll(PDO::FETCH_ASSOC);

我的数据库有一个客户表,一个产品表和一个订单表。 我希望关联数组具有订单ID,产品名称,订单日期和价格,事实上,所有这些都被返回。但是,每个订单被选中3次。 我在互联网上搜索过这样的例子,但我找不到任何符合我想要的例子。有没有人知道为什么价值增加三倍

2 个答案:

答案 0 :(得分:0)

您的$id = $recs->category_id; $display_name = stripslashes($recs->name); 不正确。 JOIN子句需要关联两个表中的列。

由于您没有从ON表格中选择任何内容,因此您根本不需要在查询中。

customers

如果您确实想要包含客户信息,那就是:

SELECT orders.orderID, orders.date, products.name, products.price
FROM orders
INNER JOIN products ON orders.productID = products.productID
WHERE orders.userID = ?

答案 1 :(得分:0)

选择*来自客户 ORDER BY Nama_Customer;

选择*来自客户 ORDER BY Nama_Customer DESC;

选择*从Pasok 订单由Jumlah_Pasok;

选择*从Pasok 由Jumlah_Pasok DESC订购;

选择*来自供应商 Nama_Supplier不喜欢'%tron';

选择*来自客户 在哪里Kode_Customer ='J-001' OR Kode_Customer ='B-002';

选择*来自客户 WHERE Kode_Customer IN('J-001','B-002');

从客户那里选择Nama_Customer 在哪里Kode_Customer IN('J-001','B-002') ORDER BY Nama_Customer;