【问题标题】:Comma Seperated Values and LIKE php/mysql Troubles逗号分隔值和 LIKE php/mysql 问题
【发布时间】:2010-03-23 07:54:39
【问题描述】:

设置 这或多或少是我之前发布的关于逗号分隔值(爆炸,内爆)的后续问题。这是过去几天一直困扰着我的场景,因为我是一个菜鸟——很抱歉这篇冗长的帖子。

我通过 url (index.php?id=variable) 传递一个变量,然后我使用

检查数据库以查找包含该变量的行
SELECT * FROM table WHERE column LIKE '%$variable%' 

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

因此,如果我们为流行的电视节目分配学校。我的数据库已设置,因此用户可以为电视节目分配多所学校。即。

南方公园--> fsu, nyu ,mit

Archer --> 哈佛

Index.php?id=nyu 将显示 Sourth Park & Archer。

问题 因为我用的是Like '%variable%'

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

index.php?=ua 南方公园不仅会展示 Archer,还会展示。

由于通配符,这很有意义...但是任何人都可以想出一种方法来实现我想要的结果吗?..有没有什么方法可以使用逗号分隔值来实现更精确的结果?..I'我完全被跺了跺脚,将不胜感激。

【问题讨论】:

  • 我认为这不是使用数据库的最佳方式。如果你已经建立了正确的关系,而不仅仅是使用表作为存储,这是一个微不足道的问题。

标签: php mysql csv sql-like


【解决方案1】:

更好的选择是创建另外两个表。 一张表是您已经拥有的“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');

【讨论】:

    【解决方案2】:

    您尝试过 REGEXP 运算符吗?像这样的东西

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

    如果标签之间有空格,可能会略有不同,但想法就在这里

    【讨论】:

    • 非常感谢,这让我走上了正确的道路..我最终使用了这样的东西:REGEXP '[[:<:>:]]'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多