逗号分隔值和LIKE php / mysql麻烦

时间:2010-03-23 07:54:40

标签: php mysql csv sql-like

设置 这或多或少是我之前发布的有关逗号分隔值(爆炸,内爆)的后续问题。这是我最后几天一直在困扰我的情景,因为我是一个菜鸟 - 对于冗长的帖子感到抱歉。

我通过url传递一个变量(index.php?id = variable),然后检查数据库,找到包含该变量的行

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

我正在使用通配符,因为结果是逗号分隔值,变量在数据库中出现多次。

因此,如果我们分配 - 说学校到流行的电视节目......我的数据库设置,以便用户可以为电视节目分配多个学校。 IE。

南方公园 - > fsu nyu mit

弓箭手 - > 哈佛 nyu

Index.php?id = nyu会显示Sourth Park&射手。

问题 因为我使用Like '%variable%'

如果我有以下内容: 南方公园 - > uark 弓箭手 - > ua

的index.php?= UA 南方公园也将展示,而不仅仅是阿切尔的表现。

由于通配符,这是有道理的...但是有人可以想到一种方法来实现我想要的结果吗?..有没有办法用逗号分隔值来获得更精确的结果?..我m完全踩了,会感激任何帮助。

2 个答案:

答案 0 :(得分:2)

更好的选择是创建另外两个表。 一个表是你已经拥有'tv_shows'的表,第二个表是'tags'表,第三个表是连接表。

以下是一个示例:

 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');

答案 1 :(得分:1)

你试过REGEXP算子吗? ......好像

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

如果您的代码之间有空格,则可能略有不同,但想法就在这里