在PHP中获取来自多个ID的单个ID的所有记录

时间:2015-11-25 11:16:19

标签: php mysql

我有一个博客页面,我从其中发送类别ID以从博客表中获取记录,其中类别ID与GET值匹配。 像这样,

-i.bak

我想要的是,我想要从其中存在Get值(即id)的表中获取所有记录。我有一个博客表结构,像, enter image description here

假设,如果我的GET值为2,我想从blog_ table中获取所有记录,其中category_id为2。

抱歉,我的英语不好。请帮帮我。

5 个答案:

答案 0 :(得分:1)

在表格

中使用FIND_IN_SET()作为逗号分隔值
 SELECT *
 FROM `tablename`
 WHERE FIND_IN_SET(2,`category_id`)

<强>已更新

As per documentation - FIND_IN_SET的第二个参数是逗号分隔列表。所以值2,7被逗号和空格分割

解决方案:停止使用此方法并规范化架构以使用一对多(或多对多)。

OR

从逗号分隔值中删除空格

答案 1 :(得分:1)

您可以使用FIND_IN_SET

示例

SELECT FIND_IN_SET('ank','b,ank,of,monk');

<强>输出

mysql> SELECT FIND_IN_SET('ank','b,ank,of,monk'); 
+------------------------------------+
| FIND_IN_SET('ank','b,ank,of,monk') |
+------------------------------------+
|                                  2 | 
+------------------------------------+
1 row in set (0.00 sec)

您的查询

$cat_ids = '2'; // OR $cat_ids = implode(',', array('2', '4', '1'));
// Use REPLACE to remove extra space between , and INT so that 1, 5, 2 becomes 1,5,2
SELECT * FROM table WHERE FIND_IN_SET($cat_ids, REPLACE(category_id, ', ', ','));

帮助链接FIND_IN_SET()

答案 2 :(得分:0)

你必须尝试这个

 SELECT *
 FROM blogs
 WHERE FIND_IN_SET( `category_id`, 2 );

答案 3 :(得分:0)

在表格

中使用FIND_IN_SET()作为逗号分隔值
SELECT *
 FROM `tablename`
 WHERE FIND_IN_SET('2',`category_id` ) > 0

希望这有帮助。

答案 4 :(得分:0)

SELECT * FROM `tableName` WHERE FIND_IN_SET('2',`category_id`)>0