首页 > 解决方案 > MySQL SELECT 结合 preg_match PHP

问题描述

我有一个 SELECT 来比较一个帐户的某个问题是否有答案

SELECT * FROM questions WHERE questions.id NOT IN (SELECT answers.qid FROM answers where answers.account = '$account')

然后在此期间,我有一个 preg_match 来检查结果是否在其他几个条件内语言 - $langsession = 一个看起来像“en,de,fr,etc”的字符串类别 - $catsession = 包含一个单词“酒店”

$lang 包含问题的语言(例如“en”)和 $qcat 包含类别(例如“hotel”)

while($row = mysqli_fetch_array($result))
          {
        $lang = $row["lang"];
        $qcat = $row["category"];
        if (preg_match('/\b' . $lang . '\b/', $langsession) && $catsession==$qcat) { 
    //some code
}
        }

我想要实现的是以某种方式放入if (preg_match...SELECT 查询。

标签: phppreg-matchmysql-select-db

解决方案


在重新考虑我的情况后,我决定使用 FIND_IN_SET 而不是正则表达式。

这就是我的诀窍

SELECT * FROM questions WHERE questions.id NOT IN
(SELECT answers.qid FROM answers where answers.account = '$account')
and FIND_IN_SET(questions.lang,'$langsession')
and category = '$catsession' order by section

推荐阅读