我在使用utf8編碼在數據庫上運行查詢時遇到了一些麻煩。 一切工作正常,直到我嘗試使用特殊字符的字符串。 因爲我將一些單獨的頁面添加到現有的prestashop模板,所以我無法對數據庫進行很多更改。關於utf8_general_ci排序規則的mysql_query
這是我的代碼(抱歉,但它的一些是羅馬尼亞語)
$acces_server=mysql_connect($db_host, $db_user, $db_pass);
if(!$acces_server) die ("Server-ul nu este disponibil momentan !");
mysql_set_charset('utf8');
echo mysql_client_encoding();
$acces_bd = mysql_select_db($db_name);
if (!$acces_bd) die ("Ne pare rau, dar baza de date nu poate fi accesata momentan !");
mysql_query('SET NAMES utf8') or die(mysql_error());
mysql_query('SET CHARACTER SET utf8') or die(mysql_error());
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci" ') or die(mysql_error());
如果我儘量讓這樣的查詢,我得到0行:
$experienta= $_GET['name'];
$rez=mysql_query("SELECT nume_cutie FROM rez_experiente WHERE nume = '".$experienta."'");
我已經使用回顯來顯示查詢,然後在phpMyAdmin中輸入它,它工作。 另外,頭部有這樣一行:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我真的不知道自己還能做些什麼,到目前爲止,我已經找到了所有解決方案似乎並不管用。我甚至嘗試使用mysqli來代替,結果是一樣的。 請幫助我,並感謝您的時間。
*編輯 我試過使用stmt->使用mysqli進行準備,但沒有奏效。 我也試着這樣做:
$experienta2=str_replace("?","%",utf8_decode($experienta));
$rez=mysql_query("SELECT nume_cutie FROM rez_experiente WHERE nume LIKE '".$experienta2."'");
至極變成這樣:
SELECT nume_cutie FROM rez_experiente WHERE nume LIKE '5th Avenue Beauty Center - Răsfăţ'
進入這個:
SELECT nume_cutie FROM rez_experiente WHERE nume LIKE '5th Avenue Beauty Center - R%sf%%'
並再次查詢在phpMyAdmin,但請求mysql_query(工作)沒有返回 我切換到utf8_unicode_ci,沒有任何改變。
你熟悉[鮑比表]的故事(http://bobby-tables.com/)? – DCoder
它是否失敗了任何名稱或只有當名稱包含非ascii字符?你嘗試過utf8_unicode_ci排序規則嗎? –
只有在涉及非Ascii字符時纔會失敗。 – user1689207