【IT168 服务器学院】在MYSQL数据库中,经常遇到字符问题,千奇百怪。我遇到的问题是:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/brand/list.php on line 51
SQL查询失败
error:()Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation ''like''
mysql4.1+php4.1.3
原因:
我在写一个查询的时候,用到了LIKE。要求是查询的内容有中文和英文,不区分大小写。开始时,用VARCHAR类型,在数据库下执行SQL查询语句没有任何问题。但用PHP写的页面中执行的时候,就出现了这样的错误:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/brand/list.php on line 51
SQL查询失败
error:()Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation ''like''
错误分析:
从错误中,可以看到是字符引起的,(一直不明白为何在PHP下执行会有这样的问题。不过有时在命令下执行也会出这样的错误。LIKE命令对中文的支持不好。所以造成了这样的错误。曾经用了许多方法,都不行。
错误解决:
通过查阅资料,解决办法如下:
1)、改变查询的关键字段类型为:varbinary类型。
2)、转换为字符类型。方法:CONVERT(model USING latin1)。在简体中文下,支持不好,但对拉丁文却很好。