strpos() 与 !== 0 比较时返回值始终计算为 true

问题描述 投票:0回答:1

无论字符串是什么,我的代码总是返回“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;
        }
    }
}
php strpos
1个回答
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
语句。
    

© www.soinside.com 2019 - 2024. All rights reserved.