SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘user_id‘ in ‘where clause‘

本文探讨了在使用ThinkPHP框架时遇到的一个SQL错误:'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_id' in 'where clause''。错误的根本原因是在foreach循环中,$where数组未被正确重置,导致后续查询出现问题。解决方案是确保每次循环开始前,清空或重新定义$where数组。

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

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_id' in 'where clause'

原因有很多,分享下遇到的其中一种

报错

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_id' in 'where clause'

报错原因(写代码一定要细心啊)

在foreach 中的数组没有重新定义
$where作为where中的查询条件,在foreach中使用过一次之后,又增加了新的元素,当再一次foreach循环时,新增的元素就会在第一次使用时报错!

错误代码

foreach{
	' ' '
	' ' '
	if($end > $start){
		$where['year_month'] = substr($one[1],0,7);
	}else{
		$where['year_month'] = substr($value['date'],0,7);
	}
	$bool = model('Workday')->where($where)->find();//已经用了$where
	if($bool){
		return json('error','请先设置工作日历~');
	}
	$where['user_id'] = $uid;// 问题所在,又给$where增加了新的元素
	$lock = model('AttendanceLock')->where($where)->find();
	if($lock){
		continue;
	}
		' ' ' 
		' ' '
}

正确代码

foreach{
	' ' '
	' ' '
	$where = array(); //这里给$where重新定义一下就行了
	if($end > $start){
		$where['year_month'] = substr($one[1],0,7);
	}else{
		$where['year_month'] = substr($value['date'],0,7);
	}
	$bool = model('Workday')->where($where)->find();//已经用了$where
	if($bool){
		return json('error','请先设置工作日历~');
	}
	$where['user_id'] = $uid;// 问题所在,又给$where增加了新的元素
	$lock = model('AttendanceLock')->where($where)->find();
	if($lock){
		continue;
	}
		' ' ' 
		' ' '
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值