TP 框架解决Unknown column 'XXX' in 'where clause' 问题
最近在使用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)'[email protected]';
$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)'[email protected]';
$user = M('ey_user')->where('phone=\''.$mobile.'\'')->find();
var_dump($user);
在字符串上添加单引号,使用String并没有什么效果。
Unknown column 'XXX' in 'where clause:
1)检查字符串添加单引号,转化成字符串类型(Mysql无法解析模糊的类型)
2)检查数据库的表中是否存在xxx的行
有什么问题和不同的意见欢迎留言讨论