记录一次程序输出和DB查询不匹配的问题

今天发生一件很神奇的事情,我用TP读取DB数据,然后打印出来的数据,和直接通过sequal pro查询出来的数据(某一列),怎么对都对不起来,我尝试

  • 清空TP缓存
  • MYSQL服务重启
  • mac重启

都无功而返,最后我发现问题出在这里

$model = new Model();
$model->startTrans();
.
.
.
.
.

// 写明细
$saveData = $this->getChkSaveItems($refund_items);
$saveData && $flag = $applyItem->saveAll($saveData);

//这里是重点
// $model->commit();

$refund_rst = M('b2b_refunds_apply_item')->field($fields)->group("{$voucher_type}")->where($where)->select();
        
echo '<pre>';
print_r($refund_rst);
echo '</pre>';
exit;

也就是说,我在打印数据的时候还在事务之内,还没commit或者rollback,而在打印这个结果之前,我刚对该列执行了update操作,所以之后我再读取这一列,实际上读取的是内存的值,并不是DB里的值。只有commit或者rollback之后,我再打印,那就和DB的值一致了。

 

转载于:https://www.cnblogs.com/linux-centos/p/10613045.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值