次のチュートリアル コラムでは、ThinkPHP データベースの操作とデータベースへの接続について紹介します。困っている友人の役に立てば幸いです。ThinkPHP には、さまざまなデータベース操作をカプセル化する抽象データベース アクセス層が組み込まれています。データベースごとに異なるコードや基礎となる実装を記述することなく、パブリック Db クラスを使用するだけで操作できます。クラスは、処理のために対応するデータベースドライバーを自動的に呼び出します。 PDO メソッドを使用することで、現在、Mysql、SqlServer、PgSQL、Sqlite およびその他のデータベースのサポートが含まれています。
アプリケーションでデータベースを使用する必要がある場合は、データベース接続情報を構成する必要があります。データベース構成ファイルを定義するには、さまざまな方法があります。
1. 設定ファイルの定義 2. メソッドの設定一般的な設定方法は、アプリケーション ディレクトリまたはモジュール ディレクトリの 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' => '\org\db\Mysql',
データベース コネクタが、デフォルトの \think\db\connector\Mysql の代わりに \org\db\Mysql クラスをデータベース接続ドライバーとして使用することを示します。
各モジュールは独立したデータベース接続パラメータを設定でき、同じ設定パラメータを繰り返し設定する必要はありません。たとえば、管理モジュールの database.php 設定ファイルで定義できます。return [ // 服务器地址 'hostname' => '192.168.1.100', // 数据库名 'database' => 'admin',];
// 开启断线重连 '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' => [ \PDO::ATTR_PERSISTENT => true, \PDO::ATTR_CASE => \PDO::CASE_LOWER,],
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_', ]; }
//在模型里单独设置数据库连接信息 namespace app\index\model; use think\Model;class User extends Model { //或者使用字符串定义 protected $connection = 'mysql://root:1234@127.0.0.1:3306/thinkphp#utf8'; }
#構成パラメータのリファレンス
サポートされているデフォルトのデータベース接続情報は次のとおりです:
#type ##ホスト名 データベース アドレス 127.0.0.1 database データベース名 なし データベース ユーザー名 データベース パスワード #ホストポート データベース ポート番号 なし なし empty utf8 なし false 0 false ##master_num 読み取りと書き込みを分離した後のマスター サーバーの数 1 slave_no スレーブサーバーのシリアル番号を指定します None ##auto_timestamp タイムスタンプ フィールドを自動的に書き込む false sql_explain SQL パフォーマンス分析を実行し、デバッグを有効にする必要があるかどうか false query クエリ オブジェクトを指定します think\db\Query builder データベース ビルダー オブジェクトを指定します なし#パラメータ名 | 説明 | デフォルト値 |
データベース タイプ | なし | |
##ユーザー名 | ||
なし | パスワード | |
なし | ||
##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 サイトの他の関連記事を参照してください。