php - 从匹配值的逗号分隔的 mysql 行返回所有结果

标签 php mysql

我有一个包含新闻数据和类别的 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/

相关文章:

php - ZF2 初始化器和 TranslatorAwareInterface

php - mysql: IF 'some columns value' 是 DISTINCT THEN 翻转 bool 值

php - 如何在 MySQL 中获取印地语和古吉拉特语的数据?

php - 在 phpmyadmin 中截断数据需要什么权限?

php - 从列包含 PHP 的 mysql 数据库中选择

php - 将数组元素插入数据库字段MYSQL

php - ZipArchive 类 PHP 安全问题

php - 统一排列/分布数组项

php - 在 MySQL 数据库中,如何通过 php 和 json 为连续重复多次的字段创建不同的键

mysql - 优化查询外的子选择