我的代码总是返回" true"无论字符串是什么我尝试了一堆东西,但他们只是返回false ...我不知道我能做些什么来解决这个问题...我的代码:
public function isBlacklisted($string)
{
$apis = mysql_connect("mysql.hostinger.fr", "mysql user", "testpass") or die(mysql_error());
mysql_select_db("u770656121_api", $apis);
$sql = "SELECT * FROM blacklist";
$result = mysql_query($sql, $apis);
while($row = mysql_fetch_array($result)) {
$username = $row['username'];
if (strpos($string,$username) !== 0) {
return true;
break;
} else {
return false;
break;
}
}
}
答案 0 :(得分:2)
strpos
返回false
未找到,0
如果它位于字符串的第一个位置。这听起来像你想要做的:
if (strpos($string,$username) !== false) {
此外,您正在遍历数据库结果,只有找到它才会返回:
while($row = mysql_fetch_array($result)) {
$username = $row['username'];
if (strpos($string,$username) !== false) {
return true;
}
}
return false;
或者,甚至更好:
$sql = "SELECT * FROM blacklist WHERE 'username' LIKE '%$username%'";
$result = mysql_query($sql, $apis);
while($row = mysql_fetch_array($result)) {
if ($row['username']) return true;
}
确保转义$username
并理想地转换为mysqli
或pdo
,而不是使用已弃用的mysql
语句。