2009-01-10 73 views
1

我在表格中有一個名爲category_id的數字字段。我想要做這樣的事情。嵌套表的最佳查詢語法?

$ids=implode(',',$id_array); 
$sql="SELECT * FROM myTbl WHERE IN(category_id,'$ids')"; 

應輸出類似:

SELECT * FROM myTbl WHERE IN(category_id,'1,2,3,4,5,6'); 

這是可能的,我使用這個正確的語法?有一個更好的方法嗎?

回答

2

從哪裏獲得id數組?如果從數據庫是你應該考慮做它都在那裏:

SELECT * FROM myTbl WHERE c_id IN (SELECT c_id FROM yourTable WHERE ...); 
3

差不多,但不太 - 這裏是一個方式,它可以工作

$ids="'".implode("','",$id_array)."'"; 
$sql="SELECT * FROM myTbl WHERE category_id IN($ids)"; 

應輸出類似:

SELECT * FROM myTbl WHERE category_id IN('1', '2', '3', '4', '5', '6'); 

注意,由於該領域是數字,引號是不必要的,但這是建立引用字符串列表的有用代碼成語。你的情況,你可以簡化爲

$ids=implode(',',$id_array); 

(我假設數組不爲空,則數組元素santized等爲清楚!)

+0

CATEGORY_ID是數字領域,沒有在IN – ninesided 2009-01-10 22:36:01

+0

所需的報價是啊,錯過了他會明確地表示它。已修改。 – 2009-01-10 22:39:40

1

是,語法爲MySQL是這樣的:

SELECT * FROM myTbl WHERE category_id IN(1,2,3,4,5,6); 

(因爲值是整數,他們不需要引號如果他們是字符串,他們每個人都需要封閉在自己的報價 - CATEGORY_ID IN(「A」,「b」)