Que dois-je faire si ThinkPHP ne parvient pas à ajouter des données à la base de données ?
Généralement, plusieurs aspects seront vérifiés en premier :
·Vérifiez si le contrôleur ou le nom du modèle est incorrect.
·Vérifiez si les données à insérer sont des paramètres vides ou manquants.
·Vérifiez le nom de la table de données et le nom du champ (la plupart du temps, le nom du champ est erroné).
Si vous vérifiez à plusieurs reprises, les données à insérer sont normales et les noms de champs et de tables sont corrects. Vous vous demandez peut-être si le programme a perdu son sang-froid et si vous devez quitter et recommencer ? Redémarrage? Essayer à nouveau? Après avoir longtemps lutté ainsi, vous constatez que rien n’a changé. À ce stade, vous devriez envisager d’autres situations.
Recommandations associées : "Tutoriel ThinkPHP"
mise en cache des champs
Lors de l'utilisation du framework ThinkPHP pour le développement, il existe structures de données Lors de modifications, lors de l'appel de la méthode M()->add() pour insérer des données, l'insertion échoue toujours et certains contenus de champ sont perdus. Donc, si vous imprimez l'objet modèle et regardez attentivement, vous constaterez que. les champs perdus sont tous des champs nouvellement ajoutés. Vous penserez au cache, vous pourrez donc effacer tous les fichiers de cache lors de l'exécution et les insérer normalement.
Si TP ne désactive pas le paramètre de cache de champ [TMPL_CACHE_ON => false] dans le fichier de configuration, cette configuration signifie s'il faut activer le cache de compilation de modèles. S'il est défini sur false, il sera recompilé. à chaque fois. Il est activé par défaut, dès qu'il est exécuté, il mettra en cache les informations du champ de données dans le dossier ~Runtime/Data/_files et les stockera dans le fichier sous forme de tableau. je n'en ai pas besoin.
·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
· Extension du comportement du système : analyse du modèle, vérifiez si le fichier cache est valide, s'il n'est pas valide, il doit être recompilé, 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; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!