ホームページ >PHPフレームワーク >ThinkPHP >データベースに接続するための ThinkPHP データベース操作
次のチュートリアル コラムでは、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 パラメータは、名前空間の完全な定義をサポートします。名前空間の定義がない場合、デフォルトで \think\db\connector が名前空間として使用されます。独自の拡張子を適用するデータベース ドライバを使用する場合は、次のように構成できます。
// 数据库类型 '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 パラメータの接続構成は、組み込みの設定パラメータとマージされます。長い接続を使用し、データベースの小文字の列名を返す必要がある場合は、次のようにすることができます。次の方法で定義します。
'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 のデータベース接続は遅延であることに注意してください。データベースはインスタンス化時に接続されますが、実際のデータ操作があるときにデータベースに接続されます。
#構成パラメータのリファレンス
サポートされているデフォルトのデータベース接続情報は次のとおりです: ##pgsql データベース ドライバーを使用している場合は、まず thinkphp/library/think/db/connector/pgsql.sql ファイルを実行用のデータベース。
#type#パラメータ名
説明
デフォルト値
データベース タイプ
なし
##ホスト名 データベース アドレス
127.0.0.1
database データベース名 データベース ユーザー名なし
##ユーザー名
データベース パスワードなし
パスワード
なし
#ホストポート データベース ポート番号 なし なし
##dsn
データベース接続 DSN 情報
empty
params
データベース接続パラメータ
utf8
charset
データベース エンコーディング
なし
prefix
データベースのテーブルプレフィックス
false
debug
デバッグ モードかどうか
0
デプロイ
データベース デプロイメント モード: 0 集中型 (単一サーバー)、1 個の分散型 (マスター/スレーブ サーバー)
false
rw_ Separate
マスタースレーブモードでデータベースの読み書きを分離するかどうか有効です
##master_num 読み取りと書き込みを分離した後のマスター サーバーの数 1
slave_no スレーブサーバーのシリアル番号を指定しますNone
##fields_strict
フィールドの存在を厳密にチェックするかどうか
true
resultset_type
データセットの戻り値の型
array
##auto_timestamp
タイムスタンプ フィールドを自動的に書き込む false
sql_explain
SQL パフォーマンス分析を実行し、デバッグを有効にする必要があるかどうか false
query
クエリ オブジェクトを指定します think\db\Query
builder
データベース ビルダー オブジェクトを指定します なし
注:
以上がデータベースに接続するための ThinkPHP データベース操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。