2014-05-16 41 views
0

大家好我有兩個表腓從兩個表中選擇工作不正常

seo_settings

| cat_id | cat_fullname | 
| 971 | catname 1 | 
| 443 | catname 2 | 

jcategories_to_hcategories

| jcategory_id | hcategory_id | 
| 1   | 971   | 
| 2   | 443   | 
| 3   | 443   | 

,我想按類別ID

我得到cat_fullname我正在使用這個

$catIds = array(1,2,3) 

foreach($catIds as $catId) 
{ 
$sql3 = mysql_query("SELECT a.cat_fullname FROM seo_settings a, jcategories_to_hcategories b WHERE a.cat_id = b.hcategory_id AND b.jcategory_id = $catId "); 
    $data3 = mysql_fetch_array($sql3); 
} 

但$ data3的回報booleanfalse

重要有行和它們連接正確我假設有在我的SQL可能是一個問題。

+1

可以請你在mysql中執行相同的查詢,看看會發生什麼?並嘗試使用顯式JOIN而不是隱式。 –

+0

由於你的代碼是在MySQL中,我提出這個建議。使用'mysql_error()'函數來檢查你得到的錯誤。避免使用'mysqll_ *'並使用'mysqli_ *' – shatheesh

+0

'... FROM seo_settings AS a,jcategories_to_hcategories AS b ...' – j08691

回答

0

嘗試這樣的事情

$catIds = array(1,2,3); 

$query = " 
SELECT a.cat_fullname 
FROM seo_settings AS a 
LEFT JOIN jcategories_to_hcategories AS b ON jcategories_to_hcategories b 
WHERE b.jcategory_id IN (".implode(",", $catIds).") 
"; 
$sql3 = mysql_query($query) or die(mysql_error()); 
while($data3 = mysql_fetch_assoc($sql3)) 
{ 
    echo $data3['cat_fullname'].'<br>'; 
} 

側面說明:停止使用mysql_並切換到mysqli_或PDO。

+0

我們的mysql仍然運行在舊版本:D – user2826311

0

而不是用','列出這兩個表,你需要使用一個內部連接。您的查詢應該是這樣的:

SELECT a.cat_fullname 
FROM seo_settings a 
INNER JOIN jcategories_to_hcategories b 
    WHERE a.cat_id = b.hcategory_id 
    AND b.jcategory_id = $catId