2014-03-19 234 views
0

我有一個簡單的MySQL查詢:PHP/MySQL的選擇和特殊字符

$query = addslashes($_REQUEST['query']); 
$sql = mysql_query ("SELECT * FROM countries WHERE name LIKE '%{$query}%'"); 

它適用於任何$查詢,除非它有它特殊字符。

假設我在尋找「奧蘭羣島」或「科特迪瓦」,它不會找回任何東西。

我也嘗試沒有addslashes,但它只是不會改變任何東西。

謝謝你的幫助。

編輯

這是我的變量設置在MySQL:

character_set_client  | utf8  
character_set_connection | utf8      
character_set_database | utf8      
character_set_filesystem | binary      
character_set_results | utf8      
character_set_server  | latin1      
character_set_system  | utf8 

的字符集服務器是我無法改變。它似乎是由我的主機設置的。 任何嘗試改變這一點都會給我一個信息,告訴我我沒有超級權限允許我這樣做。

+1

試試這個:-http ://stackoverflow.com/questions/18455406/how-to-extract-data-from-mysql-that-c​​ontains-special-characters或http://stackoverflow.com/questions/10578694/mysql-selecting-string-with -multi-special-characters在搜索時替換這些字符 – Divya

+2

請檢查輸入字符串和數據庫編碼是否爲sa我(顯然我建議UTF-8) –

+0

@洛倫佐馬爾孔:我編輯了我的問題。這可能會給你一些額外的信息。 – Baylock

回答

1

使用的mysql_query後以下:

header('Content-type: text/html; charset=utf-8'); 
+0

我嘗試過,但它不利於 – Baylock

0

我得到了答案,但這個問題不是我認爲這是...

這不是本身的MySQL之一,但有關json_encode我用於輸出MySQL結果。

所以,我不得不UTF8解碼輸入數據...

$query = utf8_decode($_REQUEST['query']); 

然後,我讓我的MySQL查詢,最後輸出我的結果是這樣的:

$response = array_map("utf8_encode", $response); 

echo json_encode ($response); 
+0

奇怪。但很高興你想出了:) –