2012-02-26 45 views
-2

我要存儲一些裏面的話分貝my_table (id,word)如下存儲數據庫行和詳細的崗位

my_table

現在我已經輸入後

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

之間比較我想做的事以下 如果評論包含my_table內的任何存儲的單詞,則它會給出echo "banned"; exit;,如果不存在則繼續echo "passed";

那麼如何比較呢?

是,如果給出的結果則呼應"banned";如果沒有的話echo "passed"這可能是正確的

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

即可; !

+0

你到底做了些什麼? – 2012-02-26 14:20:41

+0

@Col。彈片我得到一些手動評論職位宣傳某種藥物,所以我會存儲一些詞來禁止它,然後如果有人發表評論與任何這樣的藥物名稱我已經存儲然後它會停止它,然後提交到數據庫〜謝謝,這將幫助我阻止一些真正的真正的垃圾郵件製造者 – 2012-02-26 14:24:45

+0

你到目前爲止得到了什麼*代碼*你有你的代碼從數據庫中獲取這些單詞嗎? – 2012-02-26 14:27:17

回答

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

〜謝謝你的想法,但它給錯誤致命錯誤:函數名稱必須是這行中的一個字符串$ counter = $ count($ commentArray); – 2012-02-26 14:58:01

+0

對不起,我剛剛刪除計數前的$符號。你應該知道這一點 – 2012-02-26 15:02:07

+0

它比以往任何時候都完美,我想象中非常感謝,這可以節省我的網站幾乎所有的廣告或禁止使用某些垃圾郵件。 – 2012-02-26 15:06:08

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

感謝,但可以請你糾正我,如果一些錯誤假設輸入文本爲$評論,我的桌子的話我已經在存儲之前是MY_TABLE然後根據你的想法: SELECT 1 FROM MY_TABLE 其中類似CONCAT($評論」 %',my_table.word,'%') LIMIT 1 然後,如果給出結果,那麼回聲禁止,如果不是,則回聲傳遞給任何!對吧 – 2012-02-26 14:35:36

+0

對。但不要將$ comment純粹發送給您的數據庫,請使用準備好的語句。 – 2012-02-26 14:47:35

0

使用mysql_num_rows()檢查它是否存在與否。另外,不要忘了逃避你的投入!

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

〜[使用mysql_num_rows()來檢查它是否存在]這個問題是關於如何做的完全如你所說:) – 2012-02-26 14:38:16

相關問題