ThinkPHP 添加数据到数据库失败

一般情况下会先检查一下几个方面

  • 检查控制器或Model名是否有误
  • 检查需要插入的数据是否为空或者缺失参数
  • 检查数据表名及字段名称(大部分下都是字段名有误出错的)

如果反复检查,需插入的数据是正常的,字段名表名也没有错误,你可能会想是不是程序耍脾气了,退出重来?重启一下?重来试一下?就这么折腾半天发现并没有什么改变,这时候你该考虑一下其他情况了

fields字段缓存

使用ThinkPHP框架做开发时,有数据结构改动时,调用 M()->add()方法插入数据时,总会插入失败,丢失掉部分字段内容,于是将模型对象打印出来仔细查看,会发现丢失的字段都是新增加的字段,你就会联想到缓存了,于是你将runtime里面的缓存文件都清除掉就可以正常插入了。

TP在配置文件中如果没有关闭字段缓存设置[TMPL_CACHE_ON => false],该配置的意思是是否开启模板编译缓存,设为false则每次都会重新编译,默认是开启的,只要一运行它就会将数据字段信息缓存到~Runtime/Data/_files 文件夹下,并以数组方式存放在文件中,不需要就关闭好啦

  • debug.php

    1. return array(
    2. 'LOG_RECORD' => true, // 进行日志记录
    3. 'LOG_EXCEPTION_RECORD' => true, // 是否记录异常信息日志
    4. 'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR,WARN,NOTIC,INFO,DEBUG,SQL', // 允许记录的日志级别
    5. 'DB_FIELDS_CACHE' => false, // 字段缓存信息
    6. 'DB_DEBUG' => true, // 开启调试模式 记录SQL日志
    7. 'TMPL_CACHE_ON' => false, // 是否开启模板编译缓存,设为false则每次都会重新编译
    8. 'TMPL_STRIP_SPACE' => false, // 是否去除模板文件里面的html空格与换行
    9. 'SHOW_ERROR_MSG' => true, // 显示错误信息
    10. 'URL_CASE_INSENSITIVE' => false, // URL区分大小写
    11. );
  • convention.php

    1. // 布局设置
    2. 'TMPL_ENGINE_TYPE' => 'Think', // 默认模板引擎 以下设置仅对使用Think模板引擎有效
    3. 'TMPL_CACHFILE_SUFFIX' => '.php', // 默认模板缓存后缀
    4. 'TMPL_DENY_FUNC_LIST' => 'echo,exit', // 模板引擎禁用函数
    5. 'TMPL_DENY_PHP' => false, // 默认模板引擎是否禁用PHP原生代码
    6. 'TMPL_L_DELIM' => '{', // 模板引擎普通标签开始标记
    7. 'TMPL_R_DELIM' => '}', // 模板引擎普通标签结束标记
    8. 'TMPL_VAR_IDENTIFY' => 'array', // 模板变量识别。留空自动判断,参数为'obj'则表示对象
    9. 'TMPL_STRIP_SPACE' => true, // 是否去除模板文件里面的html空格与换行
    10. 'TMPL_CACHE_ON' => true, // 是否开启模板编译缓存,设为false则每次都会重新编译
    11. 'TMPL_CACHE_PREFIX' => '', // 模板缓存前缀标识,可以动态改变
    12. 'TMPL_CACHE_TIME' => 0, // 模板缓存有效期 0 为永久,(以数字为值,单位:秒)
    13. 'TMPL_LAYOUT_ITEM' => '{__CONTENT__}', // 布局模板的内容替换标识
    14. 'LAYOUT_ON' => false, // 是否启用布局
    15. 'LAYOUT_NAME' => 'layout', // 当前布局名称 默认为layout
  • 系统行为扩展:模板解析 检查缓存文件是否有效,如果无效则需要重新编译,ParseTemplateBehavior.class.php

    1. protected function checkCache($tmplTemplateFile,$prefix='') {
    2. if (!C('TMPL_CACHE_ON')) // 优先对配置设定检测
    3. return false;
    4. $tmplCacheFile = C('CACHE_PATH').$prefix.md5($tmplTemplateFile).C('TMPL_CACHFILE_SUFFIX');
    5. if(!Storage::has($tmplCacheFile)){
    6. return false;
    7. }elseif (filemtime($tmplTemplateFile) > Storage::get($tmplCacheFile,'mtime')) {
    8. // 模板文件如果有更新则缓存需要更新
    9. return false;
    10. }elseif (C('TMPL_CACHE_TIME') != 0 && time() > Storage::get($tmplCacheFile,'mtime')+C('TMPL_CACHE_TIME')) {
    11. // 缓存是否在有效期
    12. return false;
    13. }
    14. // 开启布局模板
    15. if(C('LAYOUT_ON')) {
    16. $layoutFile = THEME_PATH.C('LAYOUT_NAME').C('TMPL_TEMPLATE_SUFFIX');
    17. if(filemtime($layoutFile) > Storage::get($tmplCacheFile,'mtime')) {
    18. return false;
    19. }
    20. }
    21. // 缓存有效
    22. return true;
    23. }

ThinkPHP 添加数据到数据库失败的更多相关文章

  1. thinkphp添加数据 add()方法

    thinkphpz内置的add()方法用于向数据库表添加数据,相当于SQL中的INSERT INTO 行为添加数据 add 方法是 CURD(Create,Update,Read,Delete / 创 ...

  2. 搭建Spring框架,实现添加数据到数据库

    原创链接:http://www.cnblogs.com/yanqin/p/5284400.html (允许转载,但请注明原创链接) 1.在myeclipse中建立一个web项目 项目名 :spring ...

  3. thinkphp添加数据

    <?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { ...

  4. angular js 页面添加数据保存数据库

    一.编写实体类Controller层返回数据使用 package entity; import java.io.Serializable; public class Result implements ...

  5. laravel7 ajax H-ui框架添加数据至数据库

    1:定义路由: //租房 Route::resource('house','fang\FangattrController'); 2:控制器访问前端框架: public function create ...

  6. thinkphp 添加数据

    ....控制器方法返回视图 public function create() { // return view(); } ...............表单页面 <!DOCTYPE html&g ...

  7. 微信小程序云函数 添加数据到数据库

    1.新建小程序,建立云开发快速启动模板 这里和普通小程序的区别有三点 一是 project.config.json写上云函数所在目录"cloudfunctionRoot": &qu ...

  8. ThinkPHP讲解(六)——添加数据

    添加数据到数据库有三种方式 第一种:使用数组添加 $model=D("Info"); //实例化对象 //添加数据的第一种方式:使用数组添加 //要添加的数组,必须是关联数组,ke ...

  9. 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

    使用MySQL Workbench建立数据库,建立新的表,向表中添加数据 初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MyS ...

随机推荐

  1. 文件文件夹混合多选对话框(修改GWL_WNDPROC)

    /******************************************************************** created: 2008/07/22 created: 2 ...

  2. jquery测试文档

    Jquery版本:* jQuery JavaScript Library v1.3.2 * http://jquery.com/ 引用:<script src="JS/jquery.j ...

  3. 很多程序员都没搞明白的时间与时区知识 - 24时区/GMT/UTC/DST/CST/ISO8601

    全球24个时区的划分      相较于两地时间表,可以显示世界各时区时间和地名的世界时区表(World Time),就显得精密与复杂多了,通常世界时区表的表盘上会标示着全球24个时区的城市名称,但究竟 ...

  4. ABP开发框架前后端开发系列---(10)Web API调用类的简化处理

    在较早期的随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用>已经介绍了Web API调用类的封装处理,虽然这些调用类我们可以使用代码生成工具快 ...

  5. cookie 和 session 区别

    二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪录下来.当下次你再光临同一个网站,WEB 服务器会先看看有 ...

  6. Centos7.6 双网卡,修改默认路由

    centos修改默认路由 需求:服务器有两个网卡,一个是内网网卡,一个是外网网卡,但是默认的路由是内网: route -n 列出所有路由: 删除默认的路由: route del default gw ...

  7. Linux下编译PHP常见错误及解决方法

    1.configure: error: xml2-config not found. Please check your libxml2 installation.yum install libxml ...

  8. Java多线程同步工具类之Semaphore

    Semaphore信号量通常做为控制线程并发个数的工具来使用,它可以用来限制同时并发访问资源的线程个数. 一.Semaphore使用 下面我们通过一个简单的例子来看下Semaphore的具体使用,我们 ...

  9. 高效 MacBook 工作环境配置,超实用!

    作者:正鹏 & 隃墨 http://www.xialeizhou.com/?p=71 前言 工欲善其事,必先利其器,工具永远都是用来解决问题的,没必要为了工具而工具,一切工具都是为了能快速准确 ...

  10. SQLServer常用运维SQL整理

    今天线上SQLServer数据库的CPU被打爆了,紧急情况下,分析了数据库阻塞.连接分布.最耗CPU的TOP10 SQL.查询SQL并行度配置.查询SQL 重编译的原因等等 整理了一些常用的SQL 1 ...