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

データベースに接続するための ThinkPHP データベース操作

藏色散人
藏色散人転載
2021-01-22 14:29:154107ブラウズ

次のチュートリアル コラムでは、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.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。