我在执行从文本文件加载的插入命令时遇到问题。我使用codeIgniter "file" helper 来加载一个sql 行,然后我执行一个简单的db->query( content of my file
)。问题是当从文件加载 sql 时,特殊字符会修剪字符串的其余部分。
这是一个有效的例子
INSERT INTO test(test) VALUES("<p>There is <strong>no special character</strong> in this string</p>");
行不通的例子
INSERT INTO test(test) VALUES("<p>this character <em>é</em> is a <strong>special character</strong></p>");
在第二个例子中,只有"<p> this character <em>"
将被保存。这很奇怪,因为如果我在 phpMyAdmin 中执行同一行,它就可以正常工作。
有谁知道为什么会这样?还是我做错了什么?
谢谢
这是一个简单的“重现步骤”。
简单表:
CREATE TABLE `test` (
`test` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) ENGINE = InnoDB;
一个文件“application/view/text.txt”包含:
INSERT INTO test(test) VALUES("<p>this character <em>é</em> is a <strong>special character</strong></p>");
我用来执行插入的代码
$this->load->helper('file');
$loaded_sql = read_file(BASEPATH . "../application/views/test.txt");
$this->db->query($loaded_sql);
我的数据库配置
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
CI 配置
$config['charset'] = 'UTF-8';