我编写了这个功能
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的单词,但不会替换其他单词。
我错过了什么?
答案 0 :(得分: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;
}
答案 1 :(得分:0)
好吧,那是因为你没有遍历生成的行,你只是在第一行上执行代码。确定有一行或多行(if (mysql_num_rows($sql) > 0)
)后,您需要逐个循环记录并执行操作。
请查看以下内容:http://php.net/manual/en/function.mysql-fetch-array.php