ホームページ  >  記事  >  バックエンド開発  >  PHP フレームワークの実装方法シリーズの記事 [6] mysql データベース、_PHP チュートリアル

PHP フレームワークの実装方法シリーズの記事 [6] mysql データベース、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:57:59862ブラウズ

PHP フレームワークの実装方法シリーズの記事 [6] mysql データベース、

mysql データベース パッケージを実装する際に考慮すべき問題

  1. 使いやすさ

ダイレクトSQLステートメント操作方式を採用。 SQL ステートメントを作成できる限り、その他の学習コストはかかりません。

uctphp フレームワークによって提供される dba 補助カプセル化クラスは、一度使用するとやめられなくなります。

使用前に明示的に初期化してデータベースに接続する必要がありますか? もちろん必要ありません。

最初の SQL ステートメントが実行されるまで、データベースに接続されず、新しい db オブジェクトも作成されません。

dba は適切なタイミングでデータベースに接続し、最初の文字エンコード操作を実行します。

クエリステートメント。新しいクエリ コンストラクターは必要なく、非常に複雑で非効率な連鎖操作メソッドも提供しません。

dba は以下のクエリ補助関数を提供します。

1 2 3 4 5 6 7 8 9 10 11 12 //读一个值 Dba::readOne($sql); //读一行 Dba::readRowAssoc($sql); //读所有行 Dba::readAllAssoc($sql); //读所有行的第一列 Dba::readAllOne($sql);//在实际业务场景中,经常会有分页读取部分数据的情况。 //只要一个函数即可返回指定页码的数据内容和数据总条数 Dba::readCountAndLimit($sql$page$limit);

追記: 上記の関数の一部は、返された配列の各行を処理するマップ関数を提供できます。

文章を書きます。なぜ読み取りと書き込みを区別する必要があるのでしょうか? 明らかに、読み取りと書き込みの分離、二重書き込み、その他の機能を制御するために拡張できます。

現在、さまざまなクラウド データベースやデータベース ミドルウェアが存在するため、データベース層での実装がより良い選択となります。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Dba::write($sql);/* 直接插入或更新kv形式的array数组 会自动对value进行转义,也支持array类型的值。如果自己写sql语句要注意使用addslashes或mysql_real_escape_string来保证安全 */ Dba::insert($table$insert);     Dba::update($table$update$where);/*     对批量插入数据有更高的效率     当然过多的行数应该用array_chunk来分批插入。 */ Dba::insertS($table$inserts);

2. 事務

PDO を使用してトランザクションをサポートする

1 2 3 Dba::beginTransaction(); Dba::commit(); Dba::rollBack();

3. 長時間のランニング

swoole サービス、バックグラウンド ワーカーなどの長時間実行操作が必要な一部のシナリオでは、データベース接続がタイムアウトになる可能性があります。

データベース接続がタイムアウトしたことが判明すると、DBA は自動的に再接続を試みます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1105555.html技術記事 PHP フレームワーク シリーズの記事 [6] mysql データベースの実装方法、mysql データベースのカプセル化を実装するときに考慮する必要がある問題、使いやすさ、および SQL ステートメントの直接操作。書ける限り…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。