Php 无法构建包含字符 ö 的数组
Php fails to build an array with character ö
据我所知,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");
}
此 table 的密码如下所示:'asdf'、'asdf 123'、'ASDF 12345'、'ASDF JKL ö'。
最后一个密码:'ASDF JKL ö' 破坏了某些东西,很可能是在 while 循环或 stmt->get_result,但它不会触发错误。我只是得到一个空的结果。这意味着 while 循环必须至少有一次 运行。
我试过从行中删除“ö”,效果非常好。将 'ASDF JKL ö' 更改为 'ASDF JKL '
I 运行 函数,例如$result = findRelated('asdf');
数据库有排序规则:latin1_swedish_ci。 PHP 和 Ubuntu 运行 上的 apache 使用默认配置。
谢谢
尝试将 mysqli 对象的字符集设置为与您的数据库相同。它可以是 UTF8,你可以这样设置它:
$mysqli->set_charset('utf8');
要找出合适的字符集,请参阅此问题:How do I see what character set a MySQL database / table / column is?
据我所知,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");
}
此 table 的密码如下所示:'asdf'、'asdf 123'、'ASDF 12345'、'ASDF JKL ö'。
最后一个密码:'ASDF JKL ö' 破坏了某些东西,很可能是在 while 循环或 stmt->get_result,但它不会触发错误。我只是得到一个空的结果。这意味着 while 循环必须至少有一次 运行。
我试过从行中删除“ö”,效果非常好。将 'ASDF JKL ö' 更改为 'ASDF JKL '
I 运行 函数,例如$result = findRelated('asdf');
数据库有排序规则:latin1_swedish_ci。 PHP 和 Ubuntu 运行 上的 apache 使用默认配置。
谢谢
尝试将 mysqli 对象的字符集设置为与您的数据库相同。它可以是 UTF8,你可以这样设置它:
$mysqli->set_charset('utf8');
要找出合适的字符集,请参阅此问题:How do I see what character set a MySQL database / table / column is?