Php无法使用characterö构建数组

Php无法使用characterö构建数组,php,mysqli,prepared-statement,special-characters,Php,Mysqli,Prepared Statement,Special Characters,据我所知,PHP无法构建具有特殊字符的数组。不知道发生在哪里或为什么发生,以及如何解决 function findRelated($subpass){ $subpass = "$subpass%"; global $mysqli; if($stmt = $mysqli->prepare("SELECT pass FROM `passwords` WHERE pass LIKE ? LIMIT 500")) { $stmt->bind_par

据我所知,PHP无法构建具有特殊字符的数组。不知道发生在哪里或为什么发生,以及如何解决

function findRelated($subpass){
$subpass = "$subpass%";
global $mysqli;
if($stmt = $mysqli->prepare("SELECT pass FROM `passwords` WHERE pass LIKE ? LIMIT 500"))

        {

            $stmt->bind_param('s', $subpass);
            if(!$stmt->execute())
            {
                $stmt->close();
                return array("_status" => 3, "_msg" => "An error occured when executing your request");
            }
            if(!$result = $stmt->get_result())
            {
                return array("_status" => 3, "_msg" => "An error occured when executing your request");
            }
            while ($row = $result->fetch_assoc())
            {
                $rows[] = $row;
            }
            if(!empty($rows))
            {
                $stmt->close();
                return array("_status" => 1, "_msg" => $rows);
            }
            else
            {
                $stmt->close();
                return array("_status" => 2, "_msg" => "Your password was not found in the database.");
            }
        }

        /* Close connection */
        $stmt->close();
        return array("_status" => 3, "_msg" => "Something is wrong with database connection");
    }
此表的密码如下所示:“asdf”、“asdf 123”、“asdf 12345”、“asdf JKLö”

最后一个密码:“ASDF JKLö”很可能会在while循环或stmt->get_result中中断某些内容,但它不会触发错误。我只得到一个空的结果。这意味着while循环必须至少运行一次

我试着从行中删除“ö”,它就像一个符咒。将“ASDF JKLö”更改为“ASDF JKL”

我使用例如$result=findRelated'asdf'运行函数

数据库具有排序规则:拉丁语1_瑞典语ci。Ubuntu上的PHP和apache使用默认配置运行


谢谢

尝试将mysqli对象上的字符集设置为与数据库相同。它可以是UTF8,您可以这样设置:

$mysqli->set_字符集'utf8'

要找出合适的字符集,请参见以下问题: