mysql データベース パッケージを実装するときに考慮すべき問題
使いやすい
直接 SQL ステートメント操作を使用します。 SQL ステートメントを作成できる限り、その他の学習コストはかかりません。
uctphp フレームワークによって提供される DBA 補助カプセル化クラス。使用後は削除できません。
使用前に明示的に初期化してデータベースに接続する必要がありますか? もちろん必要ありません。
最初の SQL ステートメントが実行されるまで、データベースに接続されず、新しい db オブジェクトも作成されません。
dba は適切なタイミングでデータベースに接続し、初期の文字エンコード操作を実行します。
クエリステートメント。新しいクエリ コンストラクターは必要なく、非常に複雑で非効率な連鎖操作メソッドも提供しません。
dbaは以下のクエリ補助関数を提供します。
1 2 3 4 5 6 7 8 9 10 11 12 |
//値を読み取る
|
ps:以上部分函数可以提供一个map函数对返回数组的每一行进行加工处理。
写语句。为什么要区分read和write呢,显然可以扩展做到控制读写分离,双写等功能。
在有各种云数据库和数据库中间件的今天,在数据库层实现是更好的选择。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
2. 事务
使用pdo支持事务
1 2 3 |
Dba::readOne( $sql );
|
//すべての行を読み取ります
Dba::readAllAssoc(
$sql
);
//すべての行の最初の列を読み取ります
Dba::readAllOne(
$sql
);
//実際のビジネス シナリオでは、ページングが頻繁に発生します。読み取り部 データの状況。
//指定されたページ番号のデータ内容とデータ項目の総数を返す関数は 1 つだけです
🎜🎜Dba::readCountAndLimit(
>$sql
、
$page
、
$limit
);
🎜🎜🎜 🎜🎜🎜🎜 ps: 上記の関数の一部は、返された配列の各行を処理するマップ関数を提供できます。 🎜🎜文章を書きます。なぜ読み取りと書き込みを区別する必要があるのでしょうか? 明らかに、読み取りと書き込みの分離、二重書き込み、その他の機能を制御するために拡張できます。 🎜🎜現在、さまざまなクラウド データベースやデータベース ミドルウェアが存在するため、データベース層での実装がより良い選択となります。 🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜9🎜🎜10🎜🎜11🎜 🎜12🎜🎜13🎜🎜14🎜🎜15🎜 🎜🎜🎜🎜Dba::write(
$sql
);
🎜🎜/* kv の配列配列を直接挿入または更新しますform
🎜🎜 は値を自動的にエスケープし、配列型の値もサポートします。
🎜🎜独自の SQL ステートメントを作成する場合は、安全性を確保するために addslashes または mysql_real_escape_string を使用するように注意してください。
🎜🎜*/
🎜🎜Dba:: insert(
🎜🎜 code><code>$table
,
$insert
🎜🎜); Dba::update(
$table
,
$update
,
$ where
);🎜🎜<code>/*
🎜🎜
データのバッチ挿入の効率が高くなります
🎜 🎜
もちろん、多すぎる行は array_chunk を使用してバッチで挿入する必要があります。
🎜🎜*/
🎜🎜Dba::insertS(
$table
,
$
);
🎜🎜🎜🎜🎜🎜🎜2. >Dba::beginTransaction();🎜🎜Dba::commit();
🎜🎜Dba::rollBack();
🎜🎜🎜🎜🎜🎜 🎜3. 長時間実行 🎜🎜 swoole サービス、バックグラウンド ワーカーなど、長時間実行が必要な一部のシナリオでは、データベース接続がタイムアウトになる可能性があります。 🎜🎜データベース接続がタイムアウトしたことが判明すると、DBA は自動的に再接続を試みます。 🎜🎜
🎜
上記では、PHP フレームワーク シリーズの記事で mysql データベースを実装する方法を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。 🎜
🎜
🎜