0

我想为我的商店管理员创建一个页面,显示特定产品的订单。我已经记录了所有订单和产品,其中记录了唯一的“参考”列。我尝试了以下查询,但它显示了所有产品以及请求的产品显示了额外的一行。我只希望显示请求的特定产品的订单。$_REQUEST['productid']; 正在根据显示列表中所有产品的管理页面获取产品 ID,并且该信息已成功检索。

$reference = $_REQUEST['productid'];
mysqli_query($db,"SELECT * FROM products INNER JOIN orders ON orders.reference='".$reference."'");

任何帮助表示赞赏。

4

2 回答 2

1

我只想显示请求的特定产品的订单

你不想要这个吗?

$reference = mysqli_real_escape_string($db, $_REQUEST['productid']);
mysqli_query($db, "SELECT * FROM orders WHERE reference = " . $reference);
于 2014-09-25T22:58:28.370 回答
1

您的查询只有连接,它缺少 WHERE 语句:

$reference = $_REQUEST['productid'];
mysqli_query($db,"SELECT * 
  FROM products 
  INNER JOIN orders 
    ON orders.reference='".$reference."' 
  WHERE products.id = '".$reference."'");

此外,由于您只想检索订单,您可能希望像这样重写它:

$reference = $_REQUEST['productid'];
mysqli_query($db,"SELECT orders.* 
  FROM orders
  INNER JOIN products 
    ON orders.reference=products.id 
  WHERE products.id = '".$reference."'"
  GROUP BY orders.id);

现在这是一个正确的 JOIN,因为它映射了两个表中的两个字段。此外,由于一个订单可能有两个对同一产品的引用,我添加了可选的 GROUP BY 语句,因此每个单独的订单只显示一次(如果不需要,只需删除该部分)。

于 2014-09-25T23:00:28.633 回答