设置 这或多或少是我之前发布的有关逗号分隔值(爆炸,内爆)的后续问题。这是我最后几天一直在困扰我的情景,因为我是一个菜鸟 - 对于冗长的帖子感到抱歉。
我通过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完全踩了,会感激任何帮助。
答案 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)
SELECT * FROM table WHERE column REGEXP('(^|,)%variable%(,|$)')
如果您的代码之间有空格,则可能略有不同,但想法就在这里