怎么解决数据库CURD的时候,sql语句重复执行的问题

just路人周 2020-07-06 11:29:42
用的是TP5,我大概写下业务逻辑,比如我在做一个订单提交的时候:

Db::startTrans(); // 开启事务
try{
Insert into 订单表;
update 每日统计表;
update 用户消费统计表;
...
Db::commit();// 提交事务
} catch (Exception $exception) {
}


现在出现一个情况,就是第一条插入订单表的语句在同一时间被执行了多次,但是后面update之类的语句都只执行了一次,插入订单表的语句也没有任何循环,不知道为什么会这样,这种情况大概500条中会有一条,代码逻辑应该没有错,不然会全都有问题,现在数据库和代码是放在一台服务器上的,理论上现在还在小范围测试阶段,不应该有大并发的情况
...全文
357 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
热心的码农 2020-07-21
  • 打赏
  • 举报
回复
所以会出现重复订单数据对吧?加个唯一索引看下
苍穹0113 2020-07-17
  • 打赏
  • 举报
回复
阅读一下Tp5框架db源码,创建\PDO时的\PDO::ATTR_ERRMODE是否为\PDO::ERRMODE_EXCEPTION,如果不是,改为\PDO::ERRMODE_EXCEPTION即可。
下雨的声音丶 2020-07-06
  • 打赏
  • 举报
回复
加一个锁吧,或者你看看csrf,反正就是防止用户重复提交
just路人周 2020-07-06
  • 打赏
  • 举报
回复
csrf攻击的可能性不大,目前的用户算得上都是内测的,不是技术人员。加锁有具体的方案吗,之前一直没关心过锁的问题

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧