mysql查询英文数据时报错1054,而查数字数据却没问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql查询英文数据时报错1054,而查数字数据却没问题?相关的知识,希望对你有一定的参考价值。

mysql 字段的数据类型是varchar,长度分别是30,100
select * from table where username="$username" ,只要变量为英文字母或包含有字母,就报错1054,而全是数字,却完全没报错

php后台错误日志里,这个报错是没有记录的。

你截图里应该是在程序里通过变量赋予SQL语句来执行,username等于非数字时,要加单引号没错,但你等于后面还有一个函数,你把单引号加在函数里的参数那里了,最终等到结果还是username=username,而不是username=\'username\',所以非数字时还是会出错。
我认为应该要分开加字符串,即字符变量值最后要有单引号,"……username=" + "\'" +"函数(username)" + "\';"
参考技术A username=...
要改成
username='...'
也就是说要用引号括起来本回答被提问者采纳
参考技术B 解决:将字符串打上单引号

  字段对应的值如果为字符或字符串类型的时候,应用英文单引号括起来,你用的应该是反引号,即英文输入法时按数字1键左侧的按键,
这个标记的作用是将内容当作简单字符处理,通常用来解决意义表达与关键字冲突的情况,如create table user……会报错,
就可以用create table `user`…… or create table `table`……追问

抱歉,还是一样的错误

用 Navicat插入 mysql 数据 插入中文时报错

1366-Incorrect string value:‘\xE7\x9A\x84’for column 'name(此处为列名)'at row1

我已经在my.ini里面改为gbk 了
请问为什么会这样 难道 sql 或者Navicat 不支持我们汉字

把你的表的语言及字段的语言也改为gbk,
数据库的语言及表的语言及字段的语言是三个不同的语言级别.
你虽然改了数据库的语言,但对已建好的数据库和表不会自己改的,你可以再用navicat重新设置一下就可以了.
=======
sql 或者Navicat 不支持我们汉字
-==============
这是肯定支持的.
参考技术A 用hql不需要判断是否重复,hibernate会自动判断的 参考技术B 用hql不需要判断是否重复,hibernate会自动判断的

以上是关于mysql查询英文数据时报错1054,而查数字数据却没问题?的主要内容,如果未能解决你的问题,请参考以下文章

求解:jsp分页 数据库查询时报错。高分悬赏

Mysql中表名如果是3e开头,查询时报语法错,原因未知

Mysql中表名如果是3e开头,查询时报语法错,原因未知

mysql数据库转储时报错,求大神帮助,在线等

修改模型或者主数据之后打开查询时报错

特殊符号存入mysql数据库时报错:Incorrect string value: 'xF0x9Fx98x84xF0x9F的解决方法