TP 框架解决Unknown column ‘XXX’ in ‘where clause’ 问题

  • Post author:
  • Post category:其他


最近在使用TP框架开发公司网站,遇到了一个问题Unknown column ‘XXX’ in ‘where clause’的问题。

这个问题最初查询用户的个人信息,分别通过用户的手机号和邮箱查询:

1.手机号查询


$mobile = (string)’手机号XXX’;


$user = M(‘ey_user’)->where(‘phone=’.$mobile)->find();


var_dump($user);

可以查询出数据。

2.邮箱查询


$mobile = (string)’wds011@163.com’;


$user = M(‘ey_user’)->where(‘phone=’.$mobile)->find();


var_dump($user);

查询的结果:


我怀疑是由于TP框架或者是Mysql对于‘@’有什么特殊编码要求,然而并不是。我尝试使用数字和字符串查询,数字没有问题,但是字符串就会出现问题。

根据对打印出来的bug定位,分别对框架中的代码,进行分析最终打印“


Driver.class.php  LINE: 352



”数据库的代码。


打印结果是“

Unknown column ‘XXX’ in ‘where clause

”。

针对Mysql 出现“

Unknown column ‘XXX’ in ‘where clause

”错误,存在两个种可能出现错误的原因:

1)数据库的数据表种“

column ‘XXX’

”不存在,但是这种情况一般很少会出现。

****2)数据库无法识别“

XXX字符串

”,无法正确解析字符串。所以我们要把查询的内容转化成字符串类型**********


$mobile = (string)’wds011@163.com’;


$user = M(‘ey_user’)->where(‘phone=\”.$mobile.’\”)->find();


var_dump($user);

在字符串上添加单引号,使用String并没有什么效果。


Unknown column ‘XXX’ in ‘where clause:


1)检查字符串添加单引号,转化成字符串类型(Mysql无法解析模糊的类型)


2)检查数据库的表中是否存在xxx的行




有什么问题和不同的意见欢迎留言讨论



版权声明:本文为Future_One原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。