ThinkPHP 添加數據到數據庫失敗


ThinkPHP 添加數據到數據庫失敗

一般情況下會先檢查一下幾個方面

  • 檢查控制器或Model名是否有誤
  • 檢查需要插入的數據是否為空或者缺失參數
  • 檢查數據表名及字段名稱(大部分下都是字段名有誤出錯的)

如果反復檢查,需插入的數據是正常的,字段名表名也沒有錯誤,你可能會想是不是程序耍脾氣了,退出重來?重啟一下?重來試一下?就這么折騰半天發現並沒有什么改變,這時候你該考慮一下其他情況了

fields字段緩存

使用ThinkPHP框架做開發時,有數據結構改動時,調用 M()->add()方法插入數據時,總會插入失敗,丟失掉部分字段內容,於是將模型對象打印出來仔細查看,會發現丟失的字段都是新增加的字段,你就會聯想到緩存了,於是你將runtime里面的緩存文件都清除掉就可以正常插入了。

TP在配置文件中如果沒有關閉字段緩存設置[TMPL_CACHE_ON => false],該配置的意思是是否開啟模板編譯緩存,設為false則每次都會重新編譯,默認是開啟的,只要一運行它就會將數據字段信息緩存到~Runtime/Data/_files 文件夾下,並以數組方式存放在文件中,不需要就關閉好啦

  • debug.php

      return  array(
         'LOG_RECORD'            =>  true,  // 進行日志記錄
         'LOG_EXCEPTION_RECORD'  =>  true,    // 是否記錄異常信息日志
         'LOG_LEVEL'             =>  'EMERG,ALERT,CRIT,ERR,WARN,NOTIC,INFO,DEBUG,SQL',  // 允許記錄的日志級別
         'DB_FIELDS_CACHE'       =>  false, // 字段緩存信息
          'DB_DEBUG'				=>  true, // 開啟調試模式 記錄SQL日志
          'TMPL_CACHE_ON'         =>  false,        // 是否開啟模板編譯緩存,設為false則每次都會重新編譯
          'TMPL_STRIP_SPACE'      =>  false,       // 是否去除模板文件里面的html空格與換行
          'SHOW_ERROR_MSG'        =>  true,    // 顯示錯誤信息
          'URL_CASE_INSENSITIVE'  =>  false,  // URL區分大小寫
       );
    
  • convention.php

      // 布局設置
      'TMPL_ENGINE_TYPE'      =>  'Think',     // 默認模板引擎 以下設置僅對使用Think模板引擎有效
      'TMPL_CACHFILE_SUFFIX'  =>  '.php',      // 默認模板緩存后綴
      'TMPL_DENY_FUNC_LIST'   =>  'echo,exit',    // 模板引擎禁用函數
      'TMPL_DENY_PHP'         =>  false, // 默認模板引擎是否禁用PHP原生代碼
      'TMPL_L_DELIM'          =>  '{',            // 模板引擎普通標簽開始標記
      'TMPL_R_DELIM'          =>  '}',            // 模板引擎普通標簽結束標記
      'TMPL_VAR_IDENTIFY'     =>  'array',     // 模板變量識別。留空自動判斷,參數為'obj'則表示對象
      'TMPL_STRIP_SPACE'      =>  true,       // 是否去除模板文件里面的html空格與換行
      'TMPL_CACHE_ON'         =>  true,        // 是否開啟模板編譯緩存,設為false則每次都會重新編譯
      'TMPL_CACHE_PREFIX'     =>  '',         // 模板緩存前綴標識,可以動態改變
      'TMPL_CACHE_TIME'       =>  0,         // 模板緩存有效期 0 為永久,(以數字為值,單位:秒)
      'TMPL_LAYOUT_ITEM'      =>  '{__CONTENT__}', // 布局模板的內容替換標識
      'LAYOUT_ON'             =>  false, // 是否啟用布局
      'LAYOUT_NAME'           =>  'layout', // 當前布局名稱 默認為layout
    
  • 系統行為擴展:模板解析 檢查緩存文件是否有效,如果無效則需要重新編譯,ParseTemplateBehavior.class.php

      protected function checkCache($tmplTemplateFile,$prefix='') {
      if (!C('TMPL_CACHE_ON')) // 優先對配置設定檢測
          return false;
      $tmplCacheFile = C('CACHE_PATH').$prefix.md5($tmplTemplateFile).C('TMPL_CACHFILE_SUFFIX');
      if(!Storage::has($tmplCacheFile)){
          return false;
      }elseif (filemtime($tmplTemplateFile) > Storage::get($tmplCacheFile,'mtime')) {
          // 模板文件如果有更新則緩存需要更新
          return false;
      }elseif (C('TMPL_CACHE_TIME') != 0 && time() > Storage::get($tmplCacheFile,'mtime')+C('TMPL_CACHE_TIME')) {
          // 緩存是否在有效期
          return false;
      }
      // 開啟布局模板
      if(C('LAYOUT_ON')) {
          $layoutFile  =  THEME_PATH.C('LAYOUT_NAME').C('TMPL_TEMPLATE_SUFFIX');
          if(filemtime($layoutFile) > Storage::get($tmplCacheFile,'mtime')) {
              return false;
          }
      }
      // 緩存有效
      return true;
      }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM