2013-12-12 21 views
0

我有3个需要信息的数据库表格。我需要的信息是缩进的。在PHP中加入3个数据库表格

--products 
    --product_image 
--order_options 
    --option_value 
--order_products 
    --product_id 

现在我有以下代码

foreach ($db->query("SELECT * FROM products WHERE product_id= $product_id") as $row) 
    order_product[] = $row; 

foreach ($db->query("SELECT * FROM order_options WHERE order_id= $order_id") as $row) 
    order_size[] = $row; 

foreach ($db->query("SELECT * FROM order_products WHERE order_id= $order_id") as $row) 
    order_source[] = $row; 

(该order_id来自一个$order_id = $_GET['id'];早期的脚本。)

我想将所有三个select语句成一个查询。我已经看到这种情况,但从来没有真正理解什么我发现(即an old question from this site)我明白了youtube video我看了,并设法改变上述成以下:

foreach ($db->query("SELECT * FROM [order_products] as opro INNER JOIN order_options as oopt ON opro.order_id = oopt.order_id") as $row) 
     $order_variables[] = $row; 

虽然当我运行这个我收到此错误:

Warning: Invalid argument supplied for foreach() in /home/www/libraries/phppwinty/print.php on line 35 

那么如何才能得到这些3表之间的成功JOIN

回答

0

这样的事情应该工作。理念:参加由PRODUCT_ID产品,并通过order_options与ORDER_ID上order_products的specfied IDS:

SELECT orderproducts.product_id, orderoptions.option_value, products.product_image 

FROM order_products as orderproducts 

INNER JOIN order_options as orderoptions ON orderproducts.order_id = orderoptions.order_id 
INNER JOIN products as products ON orderproducts.product_id = products.product_id 

WHERE 
orderproducts.order_id = $order_id AND 
orderproducts.product_id = $product_id 
+0

我创建了一个的jsfiddle:http://jsfiddle.net/ebe2z/我把你的代码到我的剧本,仍然收到同样的错误? – user2948950

+0

此查询已经抓取了product_id,option_value和product_image。你只需要一个查询调用,而不是3. – kennypu

+0

我更新了JS小提琴。请看一下。 – user2948950