1. PDO (PHP Data Object) 拡張機能は、PHP がデータベースにアクセスするための軽量で永続的なインターフェイスを定義します。 PDO インターフェイスを実装する各データベース ドライバーは、定期的な拡張の形式で独自の特性を表現できます。
主に: PDO 拡張機能は単なる抽象インターフェイス層です。PDO 拡張機能自体はデータベース操作を実装できません。データベースにアクセスするには、特定のデータベース PDO ドライバーを使用する必要があります。
2. PDO の起動方法: php.ini ファイルを見つけます
3. PDO 事前定義クラス:
PDO には、PDO、PDOStatement、PDOException の 3 つの事前定義クラスが含まれています(1) PDOクラス:PHPとデータベース間の接続を表します
PDO: コンストラクター、新しい PDO オブジェクトを作成します
beginTransaction:トランザクションを開始します
コミット: トランザクションを送信します
errorCode: データベースからエラーコードを返します(ある場合)
errorInfo: データベースからエラー情報があれば、それを含む配列を返します
Exec: SQL ステートメントを実行し、影響を受けた行数を返します
getAttribute: データベース接続属性を返します
lastInsertId: データベースに挿入された最新の行(ID)を返します
準備: SQL ステートメントの実行を準備し、ステートメントの実行後に結合結果セットを返します
クエリ: SQL ステートメントを実行し、結果セットを返します
rollBack: トランザクションをロールバックします
setAttribute: データベース接続属性を設定します
(2) PDOStatement クラス: 前処理ステートメントとステートメント実行後の結合結果セットを表します
bindColomn: PHP変数を結果セットの出力列にバインドします
bindParam: PHP プリペアドステートメントのパラメータに変数をバインドします
bindValue: 処理ステートメント内のパラメータに値をバインドします
closeCursor: ステートメントを再度実行できるようにカーソルを閉じます
cloumnCount: 結果セット内の列の数を返します
errorCode: ステートメントにエラー コードがある場合は、それを返します
errorInfo: ステートメントからのエラー情報を含む配列を返します
execute: 準備されたステートメントを実行します
fetch: 結果セットから行を取り出します
fetchAll: 結果セットからすべての行を含む配列を取得します
fetchColomn: 結果セット内の特定の列のデータを返します
getAttribute: PDOStatement 属性を返します
getColomnMeta: 結果セット内の特定の列の構造を返します
nextRowset: 次の結果セットを返します
rowCount: SQL ステートメントの実行後に影響を受ける行数を返します
setAttribute: PDOStatement 属性を設定します
setFetchMode: PDOStatementのデータを取得するように設定します
トランザクション処理の簡単な例を示します:
(トランザクションの主な特徴: 原子性、一貫性、独立性、耐久性)
4. PDOの最大の特徴はパラメータバインディングとプリコンパイルの導入です
プリコンパイルは、転送とソフト解析速度という 2 つのことを担当します。プリコンパイルをサポートするには、データベースのサポートに加えて、プログラムにはドライバーのサポート (PDO および NySQLi のサポート) も必要です
5. PDO 効率の問題
(1) データ量の多い大規模なテーブルでテストしたところ、PDO の CRUD 効率は MySql 直接接続より 5%~15% 低く、分散は MySQL 直接接続よりも大きいです
(2)負荷に関しては、PDOは長い接続を開いた後はMySQLよりも負荷が高く、比較的安定しています。
実際、実際のアプリケーションでは、90% のプログラムがデータベース移行を実行せず、データベース移行を実行するアプリケーションはほとんどありません。