如何检查数据库中出现的单词?

时间:2012-02-26 11:27:29

标签: php mysql

我希望将禁止的单词存储在数据库中以便稍后确定是否存在某个单词(因此是一个被禁止的单词,应该被审查)。

单词输入表单(ban.php):

<form name="form" method="post" action="add.php">
    <input type="text" name="bad" id="bad">
    <input type="submit" name="submit" id="submit" size="12" value="submit">
</form>

PHP代码(add.php):

<?PHP
require_once("config.php"); // db conn

$bad = $_POST['bad'];
$bad = mysql_real_escape_string($bad);
$sql = "insert into my_table set bad='$bad'";

mysql_query($sql, $conn) or die(mysql_error());
echo "Done bad word added";
?>

我们说我们禁止使用ugly这个词。现在我想这样做:

<?PHP
require_once("config.php"); // db conn

$qry    = "select * from my_table";
$result = mysql_query($qry) or die($qry);
$test   = "ugly"; // Example

if ($test == any of the words in the db my_table){
    echo "banned";
}else{
    echo "passed";
{
?>

怎么做? my_table中添加了许多单词:

id,bad (1,'ugly')
id,bad (2,'sick')
id,bad (3,'manal')
id,bad (4,'fog')

3 个答案:

答案 0 :(得分:4)

您应该尝试从数据库中选择单词,这比必须通过数组要快得多。

这样的事情应该有效。

<?php
require_once("config.php"); // db conn

$test = "ugly"; // remember to use mysql_real_escape_string in the implementation

$qry = "SELECT * FROM `my_table` WHERE bad='{$test}'"; // select by value
$result=mysql_query($qry);

if( mysql_num_rows( $result ) ){ // we have a row with the 'bad' word
    echo "banned";
}else{
    echo "passed";
}
?>

答案 1 :(得分:3)

使用不同的SQL语句

$qry = "select * from my_table where bad = '".$test."'";

如果没有任何东西(禁止或通过),只需测试结果。

答案 2 :(得分:2)

你的插入SQL没有意义。您正在插入,但使用更新语法。 您的查询应该是“插入my_table值(1,'$ bad');

在寻找被禁词时,你最好通过查询找出坏词:

从my_table中选择count(1),其中word =禁止词。

如果对查询运行mysql_num_rows,任何大于0的值都表示它被禁止。