2010-03-23 47 views
0

設置 這或多或少是我以前發佈的關於逗號分隔值(爆炸,內爆)發佈的後續問題。這是過去幾天跺腳的場景,因爲我是一個noob--對於冗長的帖子感到抱歉。逗號分隔值和LIKE php/mysql疑難問題

我通過URL(的index.php?ID =變量)傳遞變量,我再檢查數據庫中使用,以查找包含該變量的行

SELECT * FROM table WHERE column LIKE '%$variable%' 

我使用通配符,因爲結果是一個以逗號分隔的值,該變量在數據庫中多次出現。

因此,如果我們分配 - 說學校流行的電視節目..我的數據庫設置,使用戶可以分配多個學校的電視節目。 IE瀏覽器。

南公園 - >FSUNYUMIT

阿徹 - >哈佛NYU

的index.php ID =紐約大學將顯示Sourth公園&弓箭手。

的問題 因爲我使用Like '%variable%'

如果我有以下幾點:? 南公園 - >uark 阿徹 - >UA

的index.php =不僅僅是阿切爾展示,南園也會展示。

這是有道理的,由於通配符......但任何人都可以想出一種方法來達到我想要的結果嗎?..有什麼方法可以使用逗號分隔值來獲得更精確的結果嗎?..我完全跺腳,並會感謝任何幫助。

+0

我不認爲這是使用數據庫的最佳方式。如果你建立了適當的關係,而不僅僅是使用表格作爲存儲,這是一個小問題需要解決。 – Extrakun 2010-03-23 08:00:58

回答

2

更好的選擇是創建另外兩個表。 一個表格是你已經有'tv_shows'的表格,第二個表格是'標籤'表格,第三個表格是連接表格。

這裏有一個例子:

CREATE TABLE tags(id INT, tag VARCHAR(200)); 
CREATE TABLE tv_tags(show_id INT, tag_id INT); 

SELECT FROM tv_shows,tv_tags WHERE tv_shows.id=tv_tags.show_id AND tag_id IN (SELECT id FROM tags WHERE tag LIKE 'tag'); 
+0

謝謝,我必須學習更多關於表格關係的知識。 – Jay 2010-03-24 22:31:55

1

你試過了REGEXP操作?某事像

SELECT * FROM table WHERE column REGEXP('(^|,)%variable%(,|$)') 

它可能會稍有不同,如果你有你的標籤之間的空間,但這個想法是在這裏

+1

非常感謝,這使我在正確的道路..我結束使用這樣的東西:REGEXP'[[:<:]]「。$ variable。」[[:>:]]'' – Jay 2010-03-24 22:31:15