2011-09-20 170 views
-2

需要一些MYSQL調用幫助。 在我的一個表格中,我有一個ID格式的數組(如排序): 13,32,51,131,57等。把它們放進去並把它們弄出來我已經想出了使用爆炸和內爆的方法,但是我怎樣才能從使用php的SQL調用中不經意地搜索它們呢?MYSQL NOT IN數組

例如: 我需要看看ID#13是否在該行。

$this_id = '13'; 
$sql="SELECT * FROM table WHERE this_id NOT IN ($this_id)"; 

所以基本上,我需要通過NOT IN數組來查看ID號是否在該數組中。 任何想法?

+3

不知道你的數據庫結構什麼的,我可以說的是:**不在每列中放置多個數據**。你的數據庫應該[標準化](http://en.wikipedia.org/wiki/Database_normalization)。 – Bojangles

+1

@JamWaffles說什麼。將數據加載到一個字段真的baaaaaadd –

+0

@DavidCaunt維基百科頁面越來越老,我告訴你!我將它粘貼到SO上的次數以及評論。這就像人們使用jQuery的臭名昭着的多重ID問題。 – Bojangles

回答

7

只要您的逗號分隔列表中不超過64個條目,您可以使用MySQL FIND_IN_SET()函數。

SELECT * FROM table WHERE FIND_IN_SET(this_id, '$this_id') = 0 

這不是很清楚,我的逗號分隔陣列是輸入數據或存儲在你的桌子 - 所以你可能需要換的參數。

(我要指出的是,它使用可能被污染的輸入構建一個查詢字符串暴露你SQL Injection攻擊)

+0

快樂的20K代表,隨着特權!我從來不知道MySQL有'FIND_IN_SET()' - 謝謝。 – Bojangles

+1

這種方法的另一個警告是,它是不可能的索引。 –