【问题标题】:Combine MySQL results and show only the orders on a particular product合并 MySQL 结果并仅显示特定产品的订单
【发布时间】:2014-09-25 22:46:48
【问题描述】:

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

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

感谢任何帮助。

【问题讨论】:

    标签: php mysql mysqli orders


    【解决方案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 语句,因此每个单独的订单只显示一次(如果没有必要,只需删除该部分)。

    【讨论】:

    • 我不断收到此错误:where 子句中的列“引用”不明确。但是看到您对查询所做的编辑,在列之前添加表名,我尝试了它并修复了它。你真是个天才!谢谢!
    • 当然还有其他编辑,例如 WHERE 子句也是正确的。再次感谢
    【解决方案2】:

    我只希望请求的特定产品的订单是 显示

    你不想要这个吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      相关资源
      最近更新 更多