addall php,thinkphp addall() 方法设置
在使用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() 方法设置相关推荐
- thinkphp多语言设置
thinkphp多语言设置有点'高大上',为什么说它有点'高大上'呢?因为本人设置了好久才弄好,而本人之所以弄了好久的原因,竟然是因为'开启语言设置必须得先开启初始化系统的行为类',所以,在这里,因为 ...
- java矩阵addall_为什么Collections.addAll()比arrays.addAll()性能好?
1. Collections.addAll()比arrays.addAll()更快吗? 在<Java核心编程>这本书中,"持有对象"这一章有个地方讲到: Collect ...
- 26.使用ajaxSetup()方法设置全局Ajax默认选项
使用ajaxSetup()方法可以设置Ajax请求的一些全局性选项值,设置完成后,后面的Ajax请求将不需要再添加这些选项值,它的调用格式为: jQuery.ajaxSetup([options])或 ...
- Xamarin XAML语言教程使用方法设置进度条进度
Xamarin XAML语言教程使用方法设置进度条进度 在ProgressBar中定义了一个ProgressTo方法,此方法也可以用来对进度条当前的进行进行设置,ProgressTo与Progress ...
- 【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )
文章目录 一.Java 类成员及 setter 和 getter 方法设置 二.Groovy 类自动生成成员的 getter 和 setter 方法 一.Java 类成员及 setter 和 gett ...
- 【错误记录】反射时调用方法及成员报错 ( 执行反射方法 | 设置反射的成员变量 | 设置方法/成员可见性 )
文章目录 一.报错信息 二.解决方案 一.报错信息 在执行反射方法时 , 反射方法后 , 直接调用该方法 ; // 获取 View 的 getListenerInfo 方法 Method getLis ...
- ThinkPHP 模型方法 setInc() 和 setDec()
TP 内置了对统计数据(数字字段)的更新方法: setInc():将数字字段值增加 setDec():将数字字段值减少 setInc() ThinkPHP setInc() 方法将数字字段值增加. 1 ...
- 两种方法设置disabled属性
两种方法设置disabled属性 //两种方法设置disabled属性 $('#fileup').attr("disabled",true); $('#fileup').attr( ...
- VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件
VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件 参考文章: (1)VS2008 在IE8中 调试 Acti ...
最新文章
- Centos7:update-initramfs -u:command not found
- 八、redis性能测试
- sphinx源码分析总结
- 2.2.2 物理层设备(中继器、集线器)
- LINUX挂接移动硬盘
- 在CRM呼叫中心的搜索结果点击Edit按钮后的处理逻辑
- 开源高性能RISC-V处理器“香山”问世
- 面试官:你连HTTP请求Post和Get都不了解?
- 历史上知名的反转现场
- js 获得radio的值
- 架构设计 | 缓存管理模式,监控和内存回收策略
- Mac下VirtualBox虚拟机Win7与主机共享文件夹
- 【iOS10】使用XCode8、Swift3. 操作SQLite3数据库的步骤(包括配置环境和SQLite语句)
- pta Percolate Up and Down(最小堆的插入维护和删除维护)
- BitTorrent协议规范(BitTorrent Protocol Specification)之Peer Wire协议(Peer Wire Protocol)-第四部分
- C++ 多线程(一)入门
- 阜和SAP FICO模块课程
- 解决USB无法识别问题
- 怎么上永久免费的GPU与TPU服务器colab
- UOJ224/洛谷P1737 【NOI2016】旷野大计算 造计算机