ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp を SQL に追加できない場合の対処方法

thinkphp を SQL に追加できない場合の対処方法

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-08-22 15:37:212316ブラウズ

thinkphp を SQL に追加できない場合の対処方法

ThinkPHP がデータベースにデータを追加できない場合はどうすればよいですか?

通常、最初にいくつかの点がチェックされます。

コントローラまたはモデル名が間違っていないか確認します。

#挿入するデータが空かパラメータが欠落していないか確認してください。

#データ テーブル名とフィールド名を確認してください (ほとんどの場合、フィールド名は間違っています)。

繰り返しチェックして、挿入されるデータが正常で、フィールド名とテーブル名が正しいことがわかった場合、プログラムが調子を崩しているので、終了してやり直す必要があるのではないかと疑問に思うかもしれません。再起動?もう一度やり直してください?このように長い間悩んだ結果、何も変わっていないことに気付いた場合は、別の状況を検討する必要があります。

関連する推奨事項: 「ThinkPHP チュートリアル

fields フィールド キャッシュ

開発に ThinkPHP フレームワークを使用する場合、次のようなものがあります。データ構造 変更を行うとき、M()->add() メソッドを呼び出してデータを挿入すると、挿入は常に失敗し、フィールドの内容の一部が失われます。そのため、モデル オブジェクトを出力して注意深く見ると、次のことがわかります。失われたフィールドはすべて新しく追加されたフィールドです。キャッシュについて考えると、ランタイム内のすべてのキャッシュ ファイルをクリアして、通常どおり挿入できます。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。