PHP - 来自while循环的MYSQL Filter变量,包含任何指定的单词

时间:2017-01-30 11:10:13

标签: php mysql pdo

我得到了一个输出用户评论的while loop。 如果评论包含来自filter_table

的任何单词,我需要对其进行过滤

查询评论

$cm_qr = $db -> prepare ("SELECT comment FROM comment_tbl WHERE post_id = :pid");
$cm_qr -> bindParam (":pid", $pid);
$cm_qr -> execute();
    while($row = $cm_qr -> fetch()){
        $comment = $row_cm_qr['comment'];   


        }

查询我过滤的单词

                $check_filter = $db -> query ("SELECT filter_word FROM filter_tbl");
                $check_filter -> execute();
                while($filter_row = $check_filter -> fetch(PDO::FETCH_ASSOC)){
                    $fword = $filter_row['filter_word'];
                }
                    $fwords = array($fword);

1 个答案:

答案 0 :(得分:0)

获取过滤词列表的方式是错误的。你不是从他们那里制作阵列的 为此,您可以使用PDO提供的专用提取模式PDO::FETCH_COLUMN

$fwords = $db->query("SELECT filter_word FROM filter_tbl")->fetchAll(PDO::FETCH_COLUMN);

这会给你一个包含单词的数组。

在过滤时,只需编写一个简单的循环(在while循环中)就像这样

foreach ($fwords as $word)
{
    if (strpos($comment, $word) !== false)
    {
        continue 2; //skip that comment from processing
    }
}