结合MySQL结果并仅显示特定产品的订单

时间:2014-09-25 22:46:48

标签: php mysql mysqli orders

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

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

  

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

你不想要这个吗?

$reference = mysqli_real_escape_string($db, $_REQUEST['productid']);
mysqli_query($db, "SELECT * FROM orders WHERE reference = " . $reference);

答案 1 :(得分: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语句,因此每个订单只显示一次(如果没有必要,只删除该部分)。