2017-10-19 79 views
0

我使用CodeIgniter,我有一個公式與一些輸入字段。問題在於,當我在輸入字段中寫入特殊字符(如「&」)時,它將被保存爲&,當我重新加載表單以編輯該值時,它將如此顯示。 這導致許多錯誤,需要解決。該值需要保存爲「&」。PHP/MySQL - 表格輸入值「&」得到保存爲「&」

我使用form_validation像,輸入字段:

$this->form_validation->set_rules("input1", "Name", "required|trim"); 
$this->form_validation->set_rules("input2", "Name", "required|trim"); 

後來,我寫所有輸入在一個數組並把它交給在模型的函數:

$input= array(); 
$input["input1"] = set_value("input1"); 
$input["input2"] = set_value("input2"); 
$this->MInput->update_input($input_id, $input); 

該模型看起來像這樣:

function update_input($input_id, $input) { 
    if($this->db->update("pa_it_input", $input, "id = $input_id") === FALSE) { 
     $error = $this->db->error(); 
     log_message("error", "Database error in MInput [".$error["code"]."] ".$error["message"]); 
     return FALSE; 
    } 

我不知道是什麼導致了錯誤。我已經檢查過所有表都設置爲UTF-8,並且頁面也以UTF-8加載。

+0

那麼接口的文檔是如何傳遞字符串以及從字符串&字符串如'&'&'&'?請同時閱讀[mcve]並採取行動。 – philipxy

+0

這是類似於下面的ff鏈接:https://stackoverflow.com/questions/11704233/the-best-way-to-store-ampersand-in-mysql-database與https://stackoverflow.com/questions/ 3545735 /存儲在&數據庫中 – Riyenz

+0

可能與您的表單有關。請顯示它。使用formhelper或'form_prep()' –

回答

0

這是否涉及PHP?什麼版本的PHP?它是否打開了「魔術引號」?

是否有任何代碼調用htmlentities()

& - >&是一個「HTML實體」問題,而不是「UTF-8」問題。

CodeIgniter帶來了什麼?也許這樣的一些無償變化?假設傳入的'表單'文本的唯一用途是將其放在HTML中是錯誤的。在你的情況下,它將進入MySQL,這需要一個不同的轉義機制。