strpos总是回归真实

时间:2014-08-18 18:23:05

标签: php mysql

我的代码总是返回" 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;
        }
    }
}

1 个答案:

答案 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并理想地转换为mysqlipdo,而不是使用已弃用的mysql语句。