PHP/MySQL - 表单输入值 "&"保存为 "&"

标签 php html mysql codeigniter utf-8

我使用 CodeIgniter,并且有一个带有一些输入字段的公式。问题是,当我在输入字段中写入特殊字符(如“&”)时,它会保存为 & ,当我重新加载表单以编辑值时,它会显示如下。 这会导致很多错误,需要解决。该值需要保存为“&”。

我对输入字段使用 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 加载。

最佳答案

这涉及 PHP 吗? PHP 什么版本?是否开启了“魔术引号”?

是否有代码调用htmlentities()

& -> & 是“HTML 实体”问题,而不是“UTF-8”问题。

CodeIgniter 带来了什么?也许像这样一些无偿的改变?认为传入“表单”文本的唯一用途就是将其以 HTML 格式输出是错误的。在你的例子中,它会进入 MySQL,它需要一个不同的转义机制。

关于PHP/MySQL - 表单输入值 "&"保存为 "&",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46827078/

相关文章:

mysql - 如何在只有一列是查询基础的 MySQL 中进行数据透视

php - 将值从数据库加载到 html-select 输入

html - 更改 <span> 而不影响 <span class ="something">

html - 遍历所有 <dd> 标签并通过 Mechanize/Nokogiri 提取特定信息

php - Foreach 只返回数组元素的第一个字母?

php - 服务器不会创建 DOMDocument 实例

html - 删除CSS中复选框的 "box"

php - HTML 和 PHP 在一个文件中

php - 如何在 sql 语句中使用 sql 数据库中的数组

python - Python 中带有 SHA256 的 base64 HMAC