2014-03-24 89 views
0

我有以下的PHP代碼獲得號碼的清單從數據庫:如何將數組放入SQL中?

$current_product_id = "SELECT `product_id`,`category_id` FROM `oc_product_to_category` WHERE `product_id`='$product_id' "; 
    $current_product_ids = mysql_query($current_product_id); 

    $current_product_cat_ids=''; 

    while($current_product_cat_id = mysql_fetch_array($current_product_ids)){ 
$current_product_cat_ids.=$current_product_cat_id['category_id'].','; 
} 
    echo $current_product_cat_ids; 

代碼回聲是這樣的:84,109,140,146,151,152,

我想現在把每這些數字並以某種方式使用它們在另一個SQL查詢有點像這樣:

$parent_category_ids = "SELECT `category_id`,`path_id` FROM `oc_category_path` WHERE `category_id`='84,109,140,146,151,152'" 

所以我可以把值放入另一個SQL查詢。任何想法我可以做到這一點?謝謝

+0

謝謝大家的回覆!每個答案都是正確的!我非常感謝幫助! :) – JCBiggar

回答

0

使用IN子句和相同的變量:

$res = mysql_query("SELECT `category_id`,`path_id` FROM `oc_category_path` WHERE `category_id` IN (" . rtrim($current_product_cat_ids, ',') . ")"); 
while ($row = mysql_fetch_assoc($res)) { 
    print_r($row); 
} 
1

你很近。您可以使用MySQL的FIND_IN_SET()IN()

$parent_category_ids = "SELECT `category_id`,`path_id` FROM `oc_category_path` 
    WHERE FIND_IN_SET(`category_id`, '84,109,140,146,151,152')" 

或者IN()

$parent_category_ids = "SELECT `category_id`,`path_id` FROM `oc_category_path` 
    WHERE `category_id` IN(84,109,140,146,151,152)" 
1
SELECT 
    `category_id` 
, `path_id` 
FROM `oc_category_path` 
WHERE `category_id` IN(84,109,140,146,151,152) 

OR:

SELECT 
    `category_id` 
, `path_id` 
FROM `oc_category_path` 
WHERE FIND_IN_SET(`category_id`, '84,109,140,146,151,152') 

第一沒有報價,第二個字符串各地報價包含逗號分隔列表。

2

標準SQL提供了操作者IN用於匹配的值的列表。

SELECT `category_id`,`path_id` 
FROM `oc_category_path` 
WHERE `category_id` IN (84,109,140,146,151,152) 

如果值來自表,子查詢是一種特別有用的技術;

SELECT `category_id`,`path_id` 
FROM `oc_category_path` 
WHERE `category_id` IN (SELECT `cat_id` FROM cat_table WHERE active=true)