2017-10-19 25 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,这需要一个不同的转义机制。