根据字符串数组PHP和MySQL过滤记录

时间:2013-05-04 12:45:41

标签: php mysql

我在PHP中有一个名为 groups 的字符串数组。根据用户输入,数组看起来像这样: groups [All,Sales]

示例:(更新表格模式)

groups[] = ['Sales', 'All']

            ANNOUNCEMENT
 |description|masterID|  groupName   |
=======================================
 | hello     | 1      | All, Final,  |
 | greetings | 2      | Sales, All,  |
 | demo      | 3      | Final,       |

因此,从上表中它只应返回“ hello ”和“问候”作为输出,因为 groups [] 具有销售全部,因为第1行包含All,第2行包含两者。请帮忙。我是SQL和PHP的业余爱好者。

我目前的尝试:

SELECT * FROM announcement WHERE groupName REGEXP '(Sales | All)'

输出:

No rows affected

2 个答案:

答案 0 :(得分:3)

  1. 我想,您的论坛应该采用字符串格式:groups[] = ['Final', 'All', 'Test']

  2. $search = implode('|', $groups)将生成字符串Final|All|Test

  3. 现在您需要将此字符串放入查询中,以便按任意一词或单词进行搜索。所以,这是WHERE groupName REGEXP '({$search})'。不要忘记查询中的引号,以免它们与您放入整个查询的引号冲突。

答案 1 :(得分:1)

MySQL做类似Perl的正则表达式。构造类似于此的查询:

SELECT description
  FROM announcement NATURAL JOIN master
 WHERE groupName REGEXP '\\b(Final|All|Test)\\b';