逗号分隔值和类似php/mysql的问题
设置 这或多或少是我之前发布的关于逗号分隔值(爆炸、内爆)的后续问题。这是过去几天一直困扰我的一个场景,因为我是一个笨蛋——很抱歉,这篇文章太长了 我通过url(index.php?id=variable)传递一个变量,然后使用逗号分隔值和类似php/mysql的问题,php,mysql,csv,sql-like,Php,Mysql,Csv,Sql Like,设置 这或多或少是我之前发布的关于逗号分隔值(爆炸、内爆)的后续问题。这是过去几天一直困扰我的一个场景,因为我是一个笨蛋——很抱歉,这篇文章太长了 我通过url(index.php?id=variable)传递一个变量,然后使用 SELECT * FROM table WHERE column LIKE '%$variable%' 我使用通配符是因为结果是一个逗号分隔的值,变量在数据库中多次出现 因此,如果我们将学校分配给流行的电视节目,我的数据库是这样设置的,用户可以将多个学校分配给电视节
SELECT * FROM table WHERE column LIKE '%$variable%'
我使用通配符是因为结果是一个逗号分隔的值,变量在数据库中多次出现
因此,如果我们将学校分配给流行的电视节目,我的数据库是这样设置的,用户可以将多个学校分配给电视节目。即
南方公园-->fsu,nyu,mit
阿彻-->哈佛,纽约大学
Index.php?id=nyu将显示Sourth Park&Archer
问题
因为我使用的是像“%variable%”一样的
如果我有以下资料:
南方公园-->uark
阿切尔-->ua
index.php?=ua
除了弓箭手表演,南方公园也将表演
由于使用了通配符,这是有意义的……但是有人能想出一种方法来实现我想要的结果吗?。有没有任何方法可以使用逗号分隔的值来实现更精确的结果?。我完全被踩死了,希望得到任何帮助。更好的方法是创建另外两个表。 一个表是您已经有“电视节目”的表,第二个表是“标签”表,第三个表是连接表 以下是一个示例:
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');
更好的选择是创建另外两个表。 一个表是您已经有“电视节目”的表,第二个表是“标签”表,第三个表是连接表 以下是一个示例:
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');
你试过REGEXP操作符了吗?类似
SELECT * FROM table WHERE column REGEXP('(^|,)%variable%(,|$)')
如果标记之间有空格,则可能会略有不同,但这里的想法是您尝试过REGEXP操作符吗?类似
SELECT * FROM table WHERE column REGEXP('(^|,)%variable%(,|$)')
如果标签之间有空格,可能会略有不同,但这里的想法是我认为这不是使用数据库的最佳方式。如果您已经建立了适当的关系,而不仅仅是使用表作为存储,那么这是一个需要解决的小问题。我认为这不是使用数据库的最佳方式。如果您设置了正确的关系,而不仅仅是将表用作存储,那么这是一个需要解决的小问题。非常感谢,这使我走上了正确的道路。.我使用了如下内容结束:REGEXP'[[:]]'非常感谢,这使我走上了正确的道路。.我使用了如下内容结束:REGEXP'[[:]]'