比较存储的数据库行和确切的帖子

时间:2012-02-26 14:14:52

标签: php

我将在db my_table (id,word)中存储一些单词,如下所示

my_table

现在我输入了帖子

$comment = $_POST[comment]; // "blab blah shit blah" have banned word (shit)

我想做以下事情 如果评论包含my_table内的任何已存储的字词,那么它会提供echo "banned"; exit;,如果没有,则继续echo "passed";

那怎么比较呢?

这可能是对的

SELECT 1
FROM my_table
WHERE $comment LIKE CONCAT('%', my_table.word , '%')
LIMIT 1

然后如果给出结果然后回显"banned";,如果没有,则echo "passed"; !

3 个答案:

答案 0 :(得分:1)

我很快写了这篇文章。没有经过实际测试,但它可以让您了解如何以更优化的方式进行您的测试。

//database connection done here
$sql = "SELECT * FROM my_table";
$result = mysql_query($sql);

$comment = $_POST[comment]; 
$commentArray = explode(" ", $comment);
$counter = count($commentArray);
$check = 0;
while($row = mysql_fetch_assoc($result))
    {
        for($i==0; $i<$counter;$i++)
        {
            if(strcasecmp($commentArray[$i],$row['word'])==0) {
                $check = 1;
            }
        }   
    }
if($check == 1)
 {
    echo "banned"; exit;
} else echo "passed";

答案 1 :(得分:0)

SELECT 1
FROM table
WHERE user_input_text LIKE CONCAT('%', table.word, '%')
LIMIT 1

答案 2 :(得分:0)

使用mysql_num_rows()检查它是否存在。此外,不要忘记逃避你的输入!

$comment = mysql_real_escape($_POST['comment']);