执行从文本文件加载的插入命令时出现问题。我使用codeIgniter“文件”助手加载一个SQL行,然后我执行一个简单的db->查询(content of my file
)。问题是当sql从文件加载时,特殊字符会修整字符串的其余部分。codeigniter插入:特殊字符修整我的字符串值
下面是工作
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 /视图/的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';
是UTF8编码的文本文件吗? – Mudshark
当然,我没有检查。文件被编码ANSI(我想是默认的记事本编码)。我将该文件保存为UTF-8,但似乎不起作用。以下是CI显示的错误:'你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在''附近使用正确的语法'INSERT INTO test(test)VALUES(“ 这个字符是' – Simmoniz