写在前边:

已经很久不更新了啊,整个2月份几乎没有遇到什么新鲜事。直到昨天我又犯了一次傻,貌似只有我犯傻的时候才有材料可以跟大家分享…

问题表现:

mysql 报错: unknow column ‘sys’ in where clause

事实上这是个挺常见的错误,我猜你大概会说,这个问题不是已经很明了了么? 你查询了一个不存在的字段! 可是事情的真相真的是这样么?并不是,报这个错误的原因还有一种可能就是你的where条件中字符串的拼接出了问题。

现场还原:

  • 还是先说一下我犯的傻吧

我首先开始排查的问题的时候输出了我的查询SQL,形似


$sql = 'select * from user where id in ('.implode(',',$idArr).')';

$idArr一个元素很多ID数组,里边的内容都是整型的数字,所以我也没想很多,然后抛出了这个mysql错误,我开始检查我的sql语句 。我用记事本打开了我刚刚打印的sql,开始搜索sys这个关键词,但是我没注意到我鼠标的位置,记事本默认向下搜索,提示没搜索到。我后来就随机把这个SQL中的id字符串删掉了一段,删的只剩几个,执行,诶!好了!我开始疑惑,难道整型的id查询在数据长的时候会出问题么?加上在CSDN看到某博客上说是字符串拼接的问题,所以我决定给他做一下处理,顺带加上了这么一段注释。

 //做一下处理换成字符串否则在$IdString过长的时候会引发unknow column 'sys' in where clause 错误

        foreach ($idArr as &$v) {
$v = '\''.$v.'\'';
}

加上之后,问题果不其然的解决了,好的,没有问题,完美!然后开开心心的上个线。

引发问题的真实原因

到了晚上快下班的时候,我在开发另一个需求的时候,突然在列表里看到了一个名为sys的用户!真的是瞬间像是被一道闪电击中了!卧槽! (这绝对值两个卧槽,才能表达我当时的内心!),是的就是你想的那样!那个用户id数组里有一个用户的idsys,而这东西是个字符串,但是却没被引号包裹。所以才引发了mysqlunknow column 'sys' in where clause错误。这才是错误的真相!

好了,不说了,趁着还没有同事发现,我要把这个包含了我愚蠢猜测的注释给删掉。

溜了溜了。

关于Mysql-unknow-column-in-where-clause的更多相关文章

  1. MySQL 1054错误 Unknown column .... in 'on clause'

    ERROR 1054 (42S22): Unknown column ... in 'on clause' 原因: MySQL5.0 Bug, 要把联合的表用括号包含起来才行: 例: SELECT ( ...

  2. mysql莫名报"unknown column ... in 'on clause'"

    今天遇见个会诡异的问题 一个web程序本地调试的好好的,结果发布到服务器上程序就报错了,报"unknown column ... in 'on clause'",网上搜了下,说是m ...

  3. java.lang.Exception: 资源处理失败,失败原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '?????‰' in 'where clause'

    1:Unknown column '?????‰' in 'where clause',这个问题,百度一搜,挺多的,但是貌似好像没有解决我的问题.贴一下我是如何拼接sql的.解决这个sql拼接bug的 ...

  4. mysql提示Column count doesn't match value count at row 1错误

    mysql提示Column count doesn't match value count at row 1错误,后来发现是由于写的SQL语句里列的数目和后面的值的数目不一致, 比如insert in ...

  5. Unknown column in 'where clause'

    Unknown column in 'where clause' 错误如题:Unknown column in 'XXX' 'where clause' 意思是:未知表名 排查 1,查表名是否有错 2 ...

  6. mysql select column default value if is null

    mysql select column default value if is null SELECT `w`.`city` AS `city`, `w`.`city_en` AS `city_en` ...

  7. mysql错误:Column count doesn't match value count at row 1

    mysql错误:Column count doesn't match value count at row 1 mysql错误:Column count doesn't match value cou ...

  8. 开发中运行mysql脚本,发现提示mysql提示Column count doesn't match value count at row 1错误

    开发中运行mysql脚本,发现提示mysql提示Column count doesn't match value count at row 1错误, 调试后发现是由于写的SQL语句里列的数目和后面的值 ...

  9. MySQL中出现Unknow column 'xx' in field list的解决办法

    首先创建一个表,然后插入数据发现出错误 经过多次尝试发现title前面多了一个空格 我们把空格去掉,然后在插入数据,发现数据创建成功

  10. mysql ALTER COLUMN MODIFY COLUMN CHANGE COLUMN 区别及用法 (转)

    -- 设置或删除列的默认值.该操作会直接修改.frm文件而不涉及表数据.此操作很快 -- ALTER COLUMN ALTER TABLE  dsp_ad_center.XianDuan ALTER  ...

随机推荐

  1. mysql安装和遇到的问题处理

    遇到需要在新系统上安装MySQL的事情,简单记录一下过程. 声明:最好的文档是官方文档,我也是看的官方文档,只是中间遇到点问题,记录一下出现的问题和处理方式.贴一些官方文档地址. 用tar包的安装方式 ...

  2. VSCode安装程序——java开发

    文章:微软为 Java 开发者推出 VSCode 安装程序 文章介绍微软为VSCode提供了开发程序,方便java开发者更好的使用VSCode

  3. rabbitmq数据备份与还原

    一.场景 现在有服务器A和服务器B ,由于业务需要,要求把服务器A上mq的数据迁移到服务器B上,rabbitmq的数据包括元数据(RabbitMQ用户.vhost.队列.交换和绑定)和消息数据,而消息 ...

  4. django实现发送邮件功能

    django实现邮件发送功能 1)首先注册一个邮箱,这里以163邮箱为例 2)注册之后登录,进行如下修改 找到设置,设置一个授权码,授权码的目的仅仅是让你有权限发邮件,但是不能登录到邮箱进行修改,发送 ...

  5. Mybatis之foreach批量插入

    1接口 public boolean insertMembersBatch(@Param("memberList") List<Members> members); @ ...

  6. html学习 菜鸟

    1HTML 不是一种编程语言,而是一种标记语言 2只有 <body>区域才会在浏览器中显示. 3<!DOCTYPE>声明有助于浏览器中正确显示网页.doctype 声明是不区分 ...

  7. tomcat实现文件上传下载

    实现下载 修改server.xml修改web.xml   实现上传 实现客户端的上传post请求代码实现 实现服务端的处理   小结         实现下载 实现下载需要  - 修改Tomcat中的 ...

  8. 浅析Scrapy框架运行的基本流程

    本篇博客将从Twisted的下载任务基本流程开始介绍,然后再一步步过渡到Scrapy框架的基本运行流程,其中还会需要我们自定义一个Low版的Scrapy框架.但内容不会涉及太多具体细节,而且需要注意的 ...

  9. POJ-2065-SETI(高斯消元)

    链接: https://vjudge.net/problem/POJ-2065 题意: For some years, quite a lot of work has been put into li ...

  10. gdb 预备知识

    1.gcc的-g选项 如果要使用gdb进行调试,必须在编译时在gcc中加入-g选项,使用参数 -g 表示将源代码调试信息编译到可执行文件中. #include <stdio.h> int ...