在使用addall()方法添加一个list的数据时,经常有字段无法更新到,但是list中那个字段的数据是有的

查阅后发现是TP的数据库有缓存机制

define(‘DB_FIELD_CACHE’, false);

于是关闭了 数据库字段缓存,同时删除了数据库的缓存文件

以为这样就好了,但更新的时候发现字段还是没有被更新

于是将list中数据清空,只放一条,但是更新还是失败,最后一个字段无法更新,其他字段都可以

使用getLastSql()获得的信息是”SELECT column_name FROM xxx”这是addall()方法的最后一条指令

我的问题是,我该如何查询具体addall()方法更新的原生sql是什么

addAll的数据data是索引数组,键值必须是从0开始的,检查下是不是这个原因

在Think/Db/Driver下有个文件是Mysql.class.php,addall方法最终调用的是其中的insertAll方法。

代码如下:

public function insertAll($datas,$options=array(),$replace=false) {

if(!is_array($datas[0])) return false;

$fields = array_keys($datas[0]);

array_walk($fields, array($this, 'parseKey'));

$values  =  array();

foreach ($datas as $data){

$value   =  array();

foreach ($data as $key=>$val){

$val   =  $this->parseValue($val);

if(is_scalar($val)) { // 过滤非标量数据

$value[]   =  $val;

}

}

$values[]    = '('.implode(',', $value).')';

}

$sql   =  ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES '.implode(',',$values);

return $this->execute($sql);

}

你可以在其中把sql语句打印出来看看。

Runtime里文件删除,检查自己的代码,虽然tp比较烂,但也不至于会这样,检查自己的问题先

addall php,thinkphp addall() 方法设置相关推荐

  1. thinkphp多语言设置

    thinkphp多语言设置有点'高大上',为什么说它有点'高大上'呢?因为本人设置了好久才弄好,而本人之所以弄了好久的原因,竟然是因为'开启语言设置必须得先开启初始化系统的行为类',所以,在这里,因为 ...

  2. java矩阵addall_为什么Collections.addAll()比arrays.addAll()性能好?

    1. Collections.addAll()比arrays.addAll()更快吗? 在<Java核心编程>这本书中,"持有对象"这一章有个地方讲到: Collect ...

  3. 26.使用ajaxSetup()方法设置全局Ajax默认选项

    使用ajaxSetup()方法可以设置Ajax请求的一些全局性选项值,设置完成后,后面的Ajax请求将不需要再添加这些选项值,它的调用格式为: jQuery.ajaxSetup([options])或 ...

  4. Xamarin XAML语言教程使用方法设置进度条进度

    Xamarin XAML语言教程使用方法设置进度条进度 在ProgressBar中定义了一个ProgressTo方法,此方法也可以用来对进度条当前的进行进行设置,ProgressTo与Progress ...

  5. 【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )

    文章目录 一.Java 类成员及 setter 和 getter 方法设置 二.Groovy 类自动生成成员的 getter 和 setter 方法 一.Java 类成员及 setter 和 gett ...

  6. 【错误记录】反射时调用方法及成员报错 ( 执行反射方法 | 设置反射的成员变量 | 设置方法/成员可见性 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在执行反射方法时 , 反射方法后 , 直接调用该方法 ; // 获取 View 的 getListenerInfo 方法 Method getLis ...

  7. ThinkPHP 模型方法 setInc() 和 setDec()

    TP 内置了对统计数据(数字字段)的更新方法: setInc():将数字字段值增加 setDec():将数字字段值减少 setInc() ThinkPHP setInc() 方法将数字字段值增加. 1 ...

  8. 两种方法设置disabled属性

    两种方法设置disabled属性 //两种方法设置disabled属性 $('#fileup').attr("disabled",true); $('#fileup').attr( ...

  9. VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件

    VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件 参考文章: (1)VS2008 在IE8中 调试 Acti ...

最新文章

  1. Centos7:update-initramfs -u:command not found
  2. 八、redis性能测试
  3. sphinx源码分析总结
  4. 2.2.2 物理层设备(中继器、集线器)
  5. LINUX挂接移动硬盘
  6. 在CRM呼叫中心的搜索结果点击Edit按钮后的处理逻辑
  7. 开源高性能RISC-V处理器“香山”问世
  8. 面试官:你连HTTP请求Post和Get都不了解?
  9. 历史上知名的反转现场
  10. js 获得radio的值
  11. 架构设计 | 缓存管理模式,监控和内存回收策略
  12. Mac下VirtualBox虚拟机Win7与主机共享文件夹
  13. 【iOS10】使用XCode8、Swift3. 操作SQLite3数据库的步骤(包括配置环境和SQLite语句)
  14. pta Percolate Up and Down(最小堆的插入维护和删除维护)
  15. BitTorrent协议规范(BitTorrent Protocol Specification)之Peer Wire协议(Peer Wire Protocol)-第四部分
  16. C++ 多线程(一)入门
  17. 阜和SAP FICO模块课程
  18. 解决USB无法识别问题
  19. 怎么上永久免费的GPU与TPU服务器colab
  20. UOJ224/洛谷P1737 【NOI2016】旷野大计算 造计算机

热门文章

  1. Shell脚本之数组
  2. 日语基础语法(完整篇)接续词和接续助词篇
  3. 芯片缺货影响全球智能手机商
  4. 亚洲消费电子展助力企业赢得商机:3M、百度和大陆集团等知名品牌确认继续参加明年展会
  5. 光源色温不能决定光源唯一的原因
  6. opencascade造型引擎功能介绍
  7. 手机端使用tasker实现上下班自动打卡(免root)
  8. FATE 1.10.0 单机部署
  9. PHP云课堂在线学习平台源码带文字安装教程
  10. 【MFC】实现简单画板功能,包含画点、画线、矩形、棋盘,指定棋盘大小等功能。