[英]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.