2014-09-25 37 views
0

我想爲我的商店的管理員製作一個頁面,顯示特定產品上的訂單。 我已經擁有了所有訂單和產品,並在其中記錄了「參考」列,這是唯一的。我嘗試了下面的查詢,但是它顯示了所有的產品加上被要求的產品顯示了一個額外的行。我只想要顯示要求的特定產品上的訂單。 $ _REQUEST [ '的productid'];根據顯示列表中的所有產品的管理頁面獲取產品ID,並且該信息正在成功檢索。結合MySQL結果並僅顯示特定產品上的訂單

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

任何幫助表示讚賞。

回答

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); 

這現在是一個正確的連接,因爲它映射兩個表中的兩個字段。此外,由於訂單可能有兩個對同一產品的引用,因此我添加了可選的GROUP BY語句,因此每個單獨的訂單僅顯示一次(如果不需要,只刪除該部分)。

+0

我不斷收到此錯誤:where子句中的列「引用」不明確。但看到你對查詢所作的編輯,在列前添加表名,我試了一下,並修復了它。你是個天才!謝謝! – 2014-09-25 23:15:04

+0

當然,其他編輯如WHERE子句也是正確的。再次感謝 – 2014-09-25 23:20:07

1

I just want the orders on the particular product being requested to be displayed

你不想要這個嗎?

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