问题描述
今天在用php yii2.0框架的时候,在执行一个查询的时候,发现突然报出下面的这个个错了
SQLSTATE[42S22]: Column not found: 1054
再回头看看我的代码是怎么写的呢:
$criteria->addCondition("billUnit = " . $model->shoukuankehudanwei);
可能眼尖的大佬们已经看出来哪里出错了吧?不过我因为之前没仔细学sql,所以语法上有问题
问题解析
这是因为字符串常量没有放在引号里面
例如:
select * from 表名 where 列名=字符串常量
以上写法,就会报错
SQLSTATE[42S22]: Column not found: 1054
select * from 表名 where 列名=’字符串常量’
因为用了引号包住了字符串常量,因此就能通过了
如果仍然报错,那么就可能是别的地方有问题啦
解决方法
原来的代码是这样子:
$criteria->addCondition("billUnit = " . $model->shoukuankehudanwei);
那么我们只需要在变量$model->shoukuankehudanwei两边加上引号就可以啦
不过这里要注意一下,因为原来已经有双引号了,我们不能再使用双引号包住字符串了,所以只能使用单引号
修改如下:
$criteria->addCondition("billUnit = ' " . $model->shoukuankehudanwei . " ' ");