Mysql不正确的字符串值

问题描述:

我刚刚通过PHP向mysql数据库(版本5.0.83)添加一些文本时遇到了问题当我尝试添加包括土耳其字符的文本时Mysql抛出错误“不正确的字符串值”。让问题更有趣的是,如果文本字符串中有一个土耳其字符,Mysql会接受它,但如果字符串中的字符数不止一个,则会给出错误。Mysql不正确的字符串值

这个错误的可能原因是什么?

UPDATE:

CREATE TABLE IF NOT EXISTS `cat_communicative` (
`parent_id` int(10) NOT NULL auto_increment, 
`child_of` tinytext, 
`level_num` int(10) default NULL, 
`category_title` tinytext, 
`category_file_name` tinytext, 
PRIMARY KEY (`parent_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ; 

我想添加文本 “类别标题”

+0

你有保存文本中的'(撇号)吗? – DevT 2013-02-20 18:56:37

+0

请添加您正在运行的示例查询。还提供数据库和表格架构。 – danielrsmith 2013-02-20 18:56:50

+0

@TilT:不,在文本中没有apastrophe – mustafa 2013-02-20 19:02:48

我发现PHP的用strtolower()函数引起的问题,如果你有多重咬字符。使用mb_strtolower将解决该问题。

这似乎是工作。

我已将字段的字符集更改为cp850,这是一种更为宽松的字符集,更重要的是接受土耳其字符。

CREATE TABLE IF NOT EXISTS `cat_communicative` (
    `parent_id` int(10) NOT NULL auto_increment, 
    `child_of` tinytext, 
    `level_num` int(10) default NULL, 
    `category_title` tinytext CHAR SET cp850, 
    `category_file_name` tinytext, 
    PRIMARY KEY (`parent_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ; 

Turkish-compatible character sets