検索
ホームページPHPフレームワークThinkPHPデータベースに接続するための ThinkPHP データベース操作

次のチュートリアル コラムでは、ThinkPHP データベースの操作とデータベースへの接続について紹介します。困っている友人の役に立てば幸いです。 ThinkPHP には、さまざまなデータベース操作をカプセル化する抽象データベース アクセス層が組み込まれています。データベースごとに異なるコードや基礎となる実装を記述することなく、パブリック Db クラスを使用するだけで操作できます。クラスは、処理のために対応するデータベースドライバーを自動的に呼び出します。 PDO メソッドを使用することで、現在、Mysql、SqlServer、PgSQL、Sqlite およびその他のデータベースのサポートが含まれています。

アプリケーションでデータベースを使用する必要がある場合は、データベース接続情報を構成する必要があります。データベース構成ファイルを定義するには、さまざまな方法があります。

1. 設定ファイルの定義

2. メソッドの設定
  • 3. モデルクラスの定義
  • 設定パラメータのリファレンス
  • 1. 設定ファイルの定義

一般的な設定方法は、アプリケーション ディレクトリまたはモジュール ディレクトリの database.php に次の設定パラメータを追加することです:

return [
  // 数据库类型  'type' => 'mysql',
  // 数据库连接DSN配置  'dsn' => '',
  // 服务器地址  'hostname' => '127.0.0.1',
  // 数据库名  'database' => 'thinkphp',
  // 数据库用户名  'username' => 'root',
  // 数据库密码  'password' => '',
  // 数据库连接端口  'hostport' => '',
  // 数据库连接参数  'params' => [],
  // 数据库编码默认采用utf8  'charset' => 'utf8',
  // 数据库表前缀  'prefix' => 'think_',
  // 数据库调试模式  'debug' => false,
  // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)  'deploy' => 0,
  // 数据库读写是否分离 主从式有效  'rw_separate' => false,
  // 读写分离后 主服务器数量  'master_num' => 1,
  // 指定从服务器序号  'slave_no' => '',
  // 是否严格检查字段是否存在  'fields_strict' => true,];
type パラメータは、名前空間の完全な定義をサポートします。名前空間の定義がない場合、デフォルトで \think\db\connector が名前空間として使用されます。独自の拡張子を適用するデータベース ドライバを使用する場合は、次のように構成できます。

// 数据库类型
'type' => '\org\db\Mysql',

データベース コネクタが、デフォルトの \think\db\connector\Mysql の代わりに \org\db\Mysql クラスをデータベース接続ドライバーとして使用することを示します。

各モジュールは独立したデータベース接続パラメータを設定でき、同じ設定パラメータを繰り返し設定する必要はありません。たとえば、管理モジュールの database.php 設定ファイルで定義できます。

return [
  // 服务器地址  
  'hostname' => '192.168.1.100',
  // 数据库名  
  'database' => 'admin',];

は、管理モジュールのデータベース アドレスが 192.168.1.100 に変更され、データベース名が admin に変更され、その他の接続パラメータがアプリケーションの database.php の設定と同じであることを意味します。

V5.0.6 以降、Mysql の切断および再接続メカニズムがサポートされています。デフォルトではオフになっています。必要に応じて、

// 开启断线重连
'break_reconnect' => true,

をデータベース設定ファイル 接続パラメータ

さまざまな接続ニーズに合わせてデータベース接続パラメータを追加できます (特定の接続パラメータについては、PHP マニュアルを参照してください)。組み込みパラメータには次のものが含まれます。 :

PDO::ATTR_CASE => PDO::CASE_NATURAL,PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,PDO::ATTR_STRINGIFY_FETCHES => false,PDO::ATTR_EMULATE_PREPARES => false,
データベースに設定された params パラメータの接続構成は、組み込みの設定パラメータとマージされます。長い接続を使用し、データベースの小文字の列名を返す必要がある場合は、次のようにすることができます。次の方法で定義します。

'params' => [
  \PDO::ATTR_PERSISTENT => true,  \PDO::ATTR_CASE => \PDO::CASE_LOWER,],

PDO でサポートされている接続パラメータは params で設定できます。

2. メソッドの構成

Db クラスを呼び出すときに、接続情報を動的に定義できます。例:

Db::connect([    // 数据库类型
    'type' => 'mysql',    // 数据库连接DSN配置
    'dsn' => '',    // 服务器地址
    'hostname' => '127.0.0.1',    // 数据库名
    'database' => 'thinkphp',    // 数据库用户名
    'username' => 'root',    // 数据库密码
    'password' => '',    // 数据库连接端口
    'hostport' => '',    // 数据库连接参数
    'params' => [],    // 数据库编码默认采用utf8
    'charset' => 'utf8',    // 数据库表前缀
    'prefix' => 'think_',]);
または文字列モードを使用します:

Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');

文字列接続の定義形式は次のとおりです:


データベース タイプ://ユーザー名:パスワード@データベース アドレス: データベース ポート/データベース名#文字セット

注: 文字列モードでは、プレフィックスや接続パラメータなどの一部のパラメータを定義できない場合があります。


アプリケーション構成ファイル

で追加のデータベース接続情報を構成した場合 (これはデータベース構成ファイルではないことに注意してください)、例:

//数据库配置1
'db_config1' => [    
// 数据库类型
    'type' => 'mysql',    
    // 服务器地址
    'hostname' => '127.0.0.1',    
    // 数据库名
    'database' => 'thinkphp',    
    // 数据库用户名
    'username' => 'root',    
    // 数据库密码
    'password' => '', 
    // 数据库编码默认采用utf8
    'charset' => 'utf8',    
    // 数据库表前缀
    'prefix' => 'think_',],
    //数据库配置2
    'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';
これを #
Db::connect('db_config1');
Db::connect('db_config2');

3 に変更できます。モデル クラス定義

If in a特定のモデル クラスに接続属性が定義されている場合、モデルは動作時に、構成ファイルに設定されているデフォルトの接続情報ではなく、指定されたデータベース接続に自動的に接続します。通常、外部の他のデータベースにある一部のデータ テーブルに使用されます。現在のデータベース接続。例:

//在模型里单独设置数据库连接信息
namespace app\index\model;
use think\Model;class User extends Model
{    protected $connection = [        // 数据库类型
        'type' => 'mysql',        // 数据库连接DSN配置
        'dsn' => '',        // 服务器地址
        'hostname' => '127.0.0.1',        // 数据库名
        'database' => 'thinkphp',        // 数据库用户名
        'username' => 'root',        // 数据库密码
        'password' => '',        // 数据库连接端口
        'hostport' => '',        // 数据库连接参数
        'params' => [],        // 数据库编码默认采用utf8
        'charset' => 'utf8',        // 数据库表前缀
        'prefix' => 'think_',
    ];
}
は、DSN 文字列モードでも定義できます。例:

//在模型里单独设置数据库连接信息
namespace app\index\model; 
use think\Model;class User extends Model
{    
//或者使用字符串定义
    protected $connection = 'mysql://root:1234@127.0.0.1:3306/thinkphp#utf8';
}

ThinkPHP のデータベース接続は遅延であることに注意してください。データベースはインスタンス化時に接続されますが、実際のデータ操作があるときにデータベースに接続されます。


#構成パラメータのリファレンス

サポートされているデフォルトのデータベース接続情報は次のとおりです:

#type##ホスト名データベース アドレス127.0.0.1databaseデータベース名なしデータベース ユーザー名データベース パスワード#ホストポートデータベース ポート番号なしなしemptyutf8なしfalse0false##master_num読み取りと書き込みを分離した後のマスター サーバーの数1slave_noスレーブサーバーのシリアル番号を指定しますNone##auto_timestampタイムスタンプ フィールドを自動的に書き込むfalsesql_explainSQL パフォーマンス分析を実行し、デバッグを有効にする必要があるかどうかfalse queryクエリ オブジェクトを指定しますthink\db\Querybuilderデータベース ビルダー オブジェクトを指定します なし
#パラメータ名 説明 デフォルト値
データベース タイプ なし
##ユーザー名
なし パスワード
なし
##dsn データベース接続 DSN 情報
params データベース接続パラメータ
charset データベース エンコーディング
prefix データベースのテーブルプレフィックス
debug デバッグ モードかどうか
デプロイ データベース デプロイメント モード: 0 集中型 (単一サーバー)、1 個の分散型 (マスター/スレーブ サーバー)
rw_ Separate マスタースレーブモードでデータベースの読み書きを分離するかどうか有効です
##fields_strict フィールドの存在を厳密にチェックするかどうか true
resultset_type データセットの戻り値の型 array
注:

##pgsql データベース ドライバーを使用している場合は、まず thinkphp/library/think/db/connector/pgsql.sql ファイルを実行用のデータベース。

以上がデータベースに接続するための ThinkPHP データベース操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcnblogsで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません