1

PHP にgroupsという文字列配列があります。配列は、ユーザー入力に基づいて、groups[All, Sales] のようになります。

例: (更新されたテーブル スキーマ)

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

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

したがって、上記の表から、出力として" hello " と " greetings "のみを返す必要があります。これは、groups[]SalesAllがあり、行 1 には All があり、行 2 には両方があるためです。助けてください。私はSQLとPHPの両方のアマチュアです。

私の現在の試み:

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

出力:

No rows affected
4

2 に答える 2

3
  1. グループは実際には文字列形式である必要があると思います: groups[] = ['Final', 'All', 'Test'].

  2. これ$search = implode('|', $groups)により string が生成されますFinal|All|Test

  3. 次に、この文字列をクエリに入力して、または単語で検索する必要があります。それで、これはWHERE groupName REGEXP '({$search})'です。クエリ内の引用符を忘れずに、クエリ全体を入れる引用符と衝突しないようにしてください。

于 2013-05-05T03:00:41.483 に答える
1

MySQL は Perl のような正規表現を行います。次のようなクエリを作成します。

SELECT description
  FROM announcement NATURAL JOIN master
 WHERE groupName REGEXP '\\b(Final|All|Test)\\b';
于 2013-05-04T13:00:46.873 に答える