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

本文探讨了使用TP框架进行数据库查询时遇到的Unknown column 'XXX' in 'where clause'错误,并详细记录了解决过程,包括对字符串类型转换及SQL语法调整的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在使用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的行


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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值