2014-02-24 70 views
0

現在一直在爲這件事情掙扎幾個小時。希望有人能幫助我。具有特殊字符的Codeigniter mysql查詢

試圖根據名字和姓氏從mysql獲取數據。除非有像ä或ö這樣的特殊字符,否則一切正常。

我對探查和查詢看起來是這樣的:

SELECT mail, address, title FROM users WHERE firstname='teemu' AND lastname='sel%C3%A4nne' 

它應該是:

SELECT mail, address, title FROM users WHERE firstname='teemu' AND lastname='selänne' 

在我的模型是這樣的:

$sql = "SELECT mail, address, title FROM users WHERE firstname=? AND lastname=?"; 

哪有我解決這個問題?謝謝!

控制器

 public function edit() 
    { 
     $this->load->model('p_model'); 
$this->load->view('edit',$data); 
    } 

public function ajax_p($first,$last) 
    { 
     $this->load->model('p_model'); 

$data['info'] = $this->p_model->pInfo($first,$last); 

$this->load->view('ajax/p',$data); 
    } 
+0

你從窗體中得到姓和名? – sinisake

+0

html在存儲或搜索它們之前對這些名稱進行編碼 – Rooster

+0

是的,我從窗體中獲取姓氏和名字。我怎麼能通過html編碼實現我在尋找的東西? – Verba

回答

0

請確保您不忘記urldecode後的值。可能發生的是您使用$ _POST而不是codeigniter函數$ this-> input-> post(); $ _POST不會在codeigniter函數中爲您解析參數。

所以請確認您傳遞給你的查詢變量確實是selänne而不是SEL%C3%A4nne

而如果是SEL%C3%A4nne,使用urldecode()或$這個 - >輸入 - > ()

+0

我使用jQuery和AJAX爲獲得該信息。'$(‘#find’)。點擊(函數(事件){ \t \t \t \t event.preventDefault(); \t \t變種名稱= $( 「#名稱」)VAL()代替(/ [] /克, 「/」);。 \t \t變種名稱= 「/」 +名稱 \t \t警報(名稱); \t \t $( 「#formajax」)負載( 「」 +名稱); \t \t \t});' – Verba

+0

alert(name);顯示/ teemu /selänne但網址沒有變化。我也做了這樣的改變:$ config ['permitted_uri_chars'] ='a-z 0-9〜%。:@_ \ - ä'; – Verba

+0

你可以發佈你的控制器嗎? – Xeli

0

你有utf8_general_ci數據庫? 而你的文件被編碼爲utf8?

+0

對兩者都是。我也嘗試過不同的數據庫編碼。 :( – Verba

0

嘗試把你的特殊字符,在配置像

$config['permitted_uri_chars'] = 'a-z 0-9~%.:@_\-ä'; 

,並確保你的數據庫是utf8_general_ci是您的服務器連接校對。

+0

這是一個很好的方法,但你如何與單引號做「「」 –