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

PHP フレームワークの実装シリーズの記事 6 つの mysql データベース メソッド

WBOY
WBOYオリジナル
2016-07-29 09:00:28843ブラウズ

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

1. 使いやすさ

SQL ステートメントの直接操作を使用します。 SQL ステートメントを作成できる限り、その他の学習コストはかかりません。

uctphp フレームワークによって提供される DBA 補助カプセル化クラス。これを使用すると、削除することはできません。

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

最初の SQL ステートメントが実行されるまで、データベースに接続したり、新しい db オブジェクトを作成したりすることはありません。

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

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

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

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

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

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

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

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 を使用します

3. 長時間実行する

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


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


上記の内容は、編集者が紹介したPHPフレームワークシリーズ記事(6)mysqlデータベースの作り方ですので、皆様のお役に立てれば幸いです。

上記は、PHP フレームワーク シリーズの記事の 6mysql データベース実装方法を内容も含めて紹介しており、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。