繁体   English   中英

PHP / MYSQL查询无结果,编码错误?

[英]PHP/MYSQL query no result, encoding wrong?

我有一个奇怪的问题现在困扰了我一段时间,我无法解决它。 为了进行测试,我创建了一个带有参数的URL,该参数用于从数据库中获取结果。 在大多数情况下,它都可以正常工作,但是似乎在与特殊字符(例如“ß”)作斗争。

这是对用户进行网址编码的示例URL:

https://www.testurl.com/login.php?user=bu%DFmann(bu%DFmann =bußmann)

这是我的php脚本的一部分:

$user = new User;
$loginOrEmail = $this->_helper->get_request_value("user", array("get"));
if ($user->check_user_is_valid($loginOrEmail)) {
.........

这是check_user_is_valid方法:

$sql = "SELECT * FROM user WHERE (email='" . mysql_real_escape_string($loginOrEmail) . "' OR login='" . mysql_real_escape_string($loginOrEmail) . "') AND activated = 'yes'";
$result = $database->query($sql);

if (mysql_num_rows($result) < 1) {
    return false;
}
return true;

现在,对于上面的网址,这似乎返回false。 如果我打印查询(使用print_r或var_dump),查询看起来很好:

SELECT * FROM user WHERE (email='bußmann' OR login='bußmann') AND activated = 'yes'

事实上。 如果我将此查询复制并粘贴到phpMyAdmin并执行,它会产生我期望的行。 这里发生了什么? 问题出在哪儿? 我很确定它与错误的编码或其他原因有关,因为它适用于所有其他名称。

我已经有mysql_set_charset('utf-8', $connection); 我连接到数据库后。

请注意:我知道这既不安全也不是最佳方法。 它仅用于测试目的。

为了结束问题并标记为已解决,并且根据OP's request包括多个注释以解决/查明问题),将文件的编码“保存”为UTF-8,而不是目前使用的“ iso-8859” -1"

尝试在数据库连接后放置mysql_set_charset

$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM