ThinkPHP新增資料到資料庫失敗怎麼辦?
一般情況下會先檢查幾個面向:
·檢查控制器或Model名稱是否有誤。
·檢查需要插入的資料是否為空或缺失參數。
·檢查資料表名及欄位名稱(大部分下都是欄位名稱有誤出錯的)。
如果反覆檢查,需插入的資料是正常的,字段名表名也沒有錯誤,你可能會想是不是程式耍脾氣了,退出重來?重啟一下?重來試一下?就這麼折騰半天發現並沒有什麼改變,這時候你該考慮一下其他情況了。
相關推薦:《ThinkPHP教學》
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; }
以上是thinkphp加入sql失敗怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!