1

我已经编程了这个功能

function bad_words($val){
    global $pre; 
    $sql = mysql_query("SELECT * FROM " . $pre . "BAD_WORDS") or die(mysql_error());
    $rs = mysql_fetch_assoc($sql); 
    if (mysql_num_rows($sql) > 0) { 
        $bad_words = $rs['BAD_WORD']; 
        $replace = $rs['REPLACE']; 
    } 
    $val = str_ireplace($bad_words, $replace, $val);
    return $val; 
}

BAD_WORDS Table (ID, BAD_WORD, REPLACE)


当我使用这个函数时,它用 id = 1 替换单词,但不替换其他单词。

我错过了什么?

4

2 回答 2

2

您只从表中获取第一行。您必须使用循环来遍历结果集中的所有行。

function bad_words($val)
{
global $pre;
$sql = mysql_query("SELECT * FROM " . $pre . "BAD_WORDS") or die(mysql_error());

if (mysql_num_rows($sql) > 0) {
   while($rs = mysql_fetch_assoc($sql)) {
      $bad_words[] = $rs['BAD_WORD'];
      $replace[] = $rs['REPLACE'];
   }
}
$val = str_ireplace($bad_words, $replace, $val);
return $val;
}
于 2012-05-09T16:55:59.827 回答
0

嗯,那是因为你没有循环遍历结果行,你只是在第一行上执行代码。一旦您确定存在一行或多行 ( if (mysql_num_rows($sql) > 0)),您需要一次遍历一条记录并执行操作。

检查更多: http: //php.net/manual/en/function.mysql-fetch-array.php

于 2012-05-09T16:56:13.167 回答