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

藏色散人
リリース: 2021-01-25 09:01:17
転載
3962 人が閲覧しました

次のチュートリアル コラムでは、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.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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!