2012-02-26 17 views
1

我想在數據庫表格中存儲某些詞語被禁止,但我無法應用它。使用數據庫表的禁止詞語應用程序

作爲遵循 1 - 創建簡單的形式來輸入字被禁止(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> 

2 - 現在將發佈它通過分貝(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"; 
?> 

3-現在如何應用它! 這是我的問題 讓我們說,我們已經取締了字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

你應該嘗試從數據庫中選擇的話,這是非常比必須穿過陣列更快。

這樣的事情應該工作。

<?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"; 
} 
?> 
+0

我沒有看到「select *」的要點 - 您正在從查詢中撤回不必要的數據。 select count會產生一個int ..在這樣簡單的應用程序中,這可能不是性能問題,但在縮放的應用程序中,它可能是 – Lock 2012-02-26 11:42:11

+1

正確,但這是我看到的最少的問題之一。從發佈的代碼中我發現OP對於PHP/MySQL來說相當新穎,所以我保持它簡單易讀。 – Robjong 2012-02-26 11:49:52

3

使用不同的SQL語句

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

不僅僅是測試的結果,如果有什麼或沒有(或禁止通過)。

2

您插入的SQL沒有意義。您正在插入,但使用更新語法。 您的查詢應該是「插入MY_TABLE值(1,‘$壞’);

在尋找一個禁忌詞彙方面,你最好找通過查詢這個壞詞:

的select count (1)從MY_TABLE其中字=禁忌詞彙。

如果運行在查詢mysql_num_rows,任何大於0意味着它是被禁止的。

相關問題