【问题标题】:PHP PDO WHERE field = json?PHP PDO WHERE 字段 = json?
【发布时间】:2018-03-17 20:09:47
【问题描述】:

你好。

所以我正在做文章提交atm,我需要文章有多个类别...文章类别将存储在categories 字段下的articles 表中,例如{"cat1","cat2","cat3"}。但是一个想法突然出现在我的脑海中......“如果我想按类别查找文章怎么办?”。如果我会做类似SELECT * FROM articles WHERE categories = ? 的事情,那么我就无法定义哪个帖子有哪些类别......所以我不能以这种方式按类别查找。有什么建议,解决方案吗?非常感谢!

编辑:如果我要从数据库中检索所有帖子并为每个解决方案执行一些操作,则会导致服务器负载甚至崩溃几分钟。现在我有 7,307 篇文章。

【问题讨论】:

  • 我假设你有一个表格“文章”和一个表格“类别” - 那么解决方案就是所谓的 n-m-relation。含义:一个有两列的表:一个引用文章,另一个引用类别。然后您可以通过简单的连接来选择您想要的任何内容。
  • 查看基本数据库设计书籍或教程。这基本上是第 2 章,所以不是火箭科学
  • 您应该查看Database Normalization。 (这是其他 cmets 的建议。)
  • 其实这不是一个坏主意。我已经有一个表“类别”,其中定义了每个类别。所以我会做类似的事情:“article_categories”。所以这需要 3 个字段:id、article_id、categorie。
  • ^ 是的,这就是要走的路……(假设您的意思是 category_id 作为最后一个字段)。

标签: php json pdo


【解决方案1】:

要解决您的实际问题,您可以使用此 sql 查询

SELECT * FROM articles WHERE categories LIKE '%cat1%'

但是,关于数据库方案,最好的方法应该是拥有articlescategories 和一个透视表article_categories 表。多对多关系会有所帮助

文章

身份证, 标题 ...

类别

身份证, 名字,...

article_categories

身份证, article_id, category_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 2018-07-18
    • 2020-12-15
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2016-08-31
    相关资源
    最近更新 更多