我将在db my_table (id,word)
中存储一些单词,如下所示
现在我输入了帖子
$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"
; !
答案 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']);