在CI框架下存入汉字 报数据库错误
这是代码:
$comData = array(
'textArea' => $textArea,
'commentID' => $newComID,
'postID' => $newPostID,
);
$this->db->insert('COMMENTMETA',$comData);
下面是报错信息:
Error Number: 1366
Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'textArea' at row 1
INSERT INTO COMMENTMETA (textArea, commentID, postID) VALUES ('测试', 8, 28)
Filename: F:\code\CI\system\database\DB_driver.php
Line Number: 330
数据库编码:
Mysql的编码都是utf8
回复内容:
在CI框架下存入汉字 报数据库错误
这是代码:
$comData = array(
'textArea' => $textArea,
'commentID' => $newComID,
'postID' => $newPostID,
);
$this->db->insert('COMMENTMETA',$comData);
下面是报错信息:
Error Number: 1366
Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'textArea' at row 1
INSERT INTO COMMENTMETA (textArea, commentID, postID) VALUES ('测试', 8, 28)
Filename: F:\code\CI\system\database\DB_driver.php
Line Number: 330
数据库编码:
Mysql的编码都是utf8
看下表是否为utf-8,这是在新建表的时候可选的属性。
update:
我仔细看了一下,你的model看起来是不符合CI规范的,使用了数组。正确的应该是:
$this->[键名] = $this->input->post('***');
另外你可以看看mysql的data文件夹里面的对应库的文件夹里面的配置文件,那个必须是utf-8.
你的截图只说明了你的mysql环境是utf8的,不能代表你插入的那个表以及那些字段也是utf8编码的,此外,检查下你文件的编码(或者说插入的数据的编码)是否是utf8
用iconv()转换一下插入字符串的编码
见数据库相关CI手册
检查这一行
$db['default']['char_set'] = "utf8";
本文原创发布php中文网,转载请注明出处,感谢您的尊重!