我有一个包含新闻数据和类别的 mysql 表,我正在尝试选择某个类别中的所有数据。我想得不够远,所以我目前在某些时候没有使用规范化表,我可能会返回并重新编写该部分以使用规范化表。
这是我的表结构
+---------+------------+------------+--------+----------+
| news_id | news_title | news | cat_id | date |
+---------+------------+------------+--------+----------+
| 1 | title1 | blahblah |1,2,4,6 |2009-11-24|
+---------+------------+------------+--------+----------+
| 2 | new title | text 123 | 2 |2009-01-24|
+---------+------------+------------+--------+----------+
| 3 | new title3 | text 3 | 2,19,6 |2009-02-24|
+---------+------------+------------+--------+----------+
假设我想返回类别 2 的所有结果,我正在尝试使用此语句。
$query= mysql_query("SELECT id FROM `news_data` WHERE FIND_IN_SET('" . str_replace(',',"',cat_id) OR FIND_IN_SET('",$cat_id)."',cat_id)") or die(mysql_error());
这将返回新闻 ID 为 2 和 3 的结果,因为它们都以“2”开头。未选择第一个新闻 ID,因为“2”是第二个值。我知道 mysql 语句有一些简单的错误,我希望有人能够帮助我。
谢谢, 布鲁克
最佳答案
只需删除 find_in_set 中数字的引号。为我工作。
" WHERE FIND_IN_SET(" . str_replace(',',",cat_id) OR FIND_IN_SET(",$cat_id).",cat_id)")
关于php - 从匹配值的逗号分隔的 mysql 行返回所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987552/