簡體   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