PHP は、オープンソースの汎用スクリプト言語であり、動的でインタラクティブな Web ページの作成に広く使用されています。 PHP は、次のような広範囲のリレーショナル データベース管理システムにアクセスできます。 MYSQL、SQLite 、 そして PostgreSQL 。の PHP5.1 バージョンでは、新しいデータベース接続抽象化ライブラリが提供されました。 PHPデータオブジェクト (PDO)。
PDOとは何ですか?
PDOとは PHPデータオブジェクト これは、PHP でデータベースにアクセスするための軽量で一貫したインターフェイスを定義する PHP 拡張機能です。これは、コア PDO クラスとデータベース固有のドライバーを提供する PHP 拡張機能のセットです。各データベース ドライバーは、データベース固有の機能を、PDO インターフェイスを実装する通常の拡張関数として公開できます。
注: PDO 拡張機能自体を使用して、いかなる種類のデータベース機能も実行することはできません。データベース サーバーにアクセスするには、データベース固有の PDO ドライバーを使用する必要があります。
PDO は、データベースの抽象化ではなく、データ アクセスの抽象化に主に焦点を当てています。それは提供します データアクセス抽象化層 つまり、使用しているデータベースに関係なく、クエリを発行してデータを取得するには、そのデータベースが提供する同じ関数を使用する必要があります。 PDO は、SQL を書き換えたり、欠落している機能をエミュレートしたりしないため、データの抽象化を提供しません。
PDOのメリット
PDO は、オブジェクトを操作するためのさまざまな方法を提供し、作業を大幅に容易にする準備済みステートメントを取得します。これは PHP のデータベース アクセス ツールで、これを使用して複数のデータベースに均一なアクセスを可能にします。
PDO を使用すると、異なるデータベースやプラットフォーム間の比較的シームレスな切り替えが可能になります。これは、接続文字列を変更することで簡単に行うことができます。データベース固有の構文はサポートされていません。
string.compareとC#
PDO には次のような利点があります。
文字列から整数へのJava
PDO 拡張機能は、PDO ドライバー用に作成された任意のデータベースにアクセスできます。使用可能な PDO ドライバーがいくつかあります。 FreeTDS、Microsoft SQL Server、Sybase、IBM DB2、Oracle Call Interface、Firebird/Interbase 6 、 そして PostgreSQL データベースなど。
ドライバーはすべてのシステムで自動的に利用できるわけではないため、利用可能なドライバーを見つけて、必要なときに追加する必要があります。
データベース接続を確立するために使用できるさまざまな構文があります。これらの構文は特定のデータベースに依存します。 PDO を使用する場合は、操作を try/catch ブロックでラップし、例外手法を使用する必要があります。
通常、作成する必要がある接続は 1 つだけであり、これらの接続はデータベースをプログラミングして null に設定することで閉じられます。
PDO では、エラー処理に例外を使用できます。例外を生成するには、PDO を関連するエラー モード属性に強制することができます。
3 つのエラー モードがあります。 静けさ (デフォルト)、 警告 、 そして 例外 。警告と例外は、DRY プログラミングでより便利です。
PDO は、一般的に使用されるデータベースの挿入および更新操作を 2 段階のプロセスに減らします。
準備>>[バインド]>>実行。
この方法により、SQL インジェクションによる悪意のある攻撃から保護する PDO のプリペアド ステートメントを最大限に活用できます。
準備されたステートメントは、このデータをサーバーに送信することで複数回実行できる、事前にコンパイルされた SQL ステートメントです。プレースホルダー内で使用されるこのデータは、SQL インジェクション攻撃から自動的に保護されます。
PDO を使用する利点
PDO はネイティブ データベース ドライバーです。 PDO を使用すると、次のような利点があります。
PDO クラス
以下に示す 3 つの PDO クラスがあります。
PDO がサポートするデータベース
- MySQL
- PostgreSQL
- オラクル
- 火の鳥
- MS SQLサーバー
- サイベース
- インフォミックス
- IBM
- 無料TDS
- SQLite
- キューブリッド
- 4D
PDO と MySQLi の比較
PHP を使用してデータベースにアクセスするには、主に 2 つのオプションがあります。 MySQLi そして PDO (PHP データ オブジェクト)。 MySQLi は、より高速なパフォーマンスを提供する PHP のネイティブですが、経験豊富な開発者のほとんどは、多種多様なデータベース ドライバーをサポートする PDO での作業を好みます。 PDO と MySQLi には、機能に基づいて以下に示すいくつかの違いがあります。
特徴 | PDO | MySQLi |
---|---|---|
DBサポート | 12 種類のドライバー | MySQLのみ |
繋がり | 簡単 | 簡単 |
API | 開ける | OOP + プロシージャ |
パフォーマンス | 速い | 速い |
名前付きパラメータ | はい | いいえ |
オブジェクトマッピング | はい | はい |
ストアド プロシージャ | はい | はい |
クライアント側の準備済みステートメント | はい | いいえ |
安全 | MySQLi よりも安全です。 | 安全ですが、PDO 以上ではありません。 |
PDO と MySQLi ではどちらを優先すべきですか?
PDO と MySQLi にはそれぞれ次のような利点があります。
- 前に見たように、PDO は 12 の異なるデータベース システムで動作しますが、MySQL は MySQL データベースでのみ動作します。したがって、プロジェクトを別のデータベースに切り替えたい場合も、PDO を使用すると簡単に行えます。 MySQLi では、コード全体を書き直す必要があります。
- PDO と MySQLi は両方ともオブジェクト指向ですが、MySQLi は手続き型 API も提供します。どちらも準備済みステートメントをサポートしています。プリペアド ステートメントは SQL インジェクションから保護するため、Web アプリケーションのセキュリティにとって重要です。
要件
この拡張機能を構築するために外部ライブラリは必要ありません。
JavaScriptのトリム
インストールプロセス
ステップ1: 最新のXAMPPサーバーをここからダウンロードします https://www.apachefriends.org/download.html Windows、Linux、MacOS などのさまざまなプラットフォームに対応します。
注: ここでは、Windows OS のインストール プロセスについてのみ説明します。
ステップ2: 次の手順に従って、XAMPP サーバーをシステムにインストールします。
ステップ 3: インストールするコンポーネントを選択し、「次へ」ボタンをクリックします。
ステップ 4: XAMPP をインストールする場所に、xampp という名前の新しいフォルダーを作成します。
ステップ5: ここで「次へ」をクリックして次に進みます。ここからXAMPPサーバーのインストールが始まります。
ステップ6: XAMPPは正常にインストールされました。 「完了」ボタンをクリックします。
ステップ7: 優先言語を選択します。
ステップ8: ここから Apache サーバーと MySQL を実行します (指定されたスクリーンショットに従って)。
ステップ9: 次に、php.ini を開きます。 C:/xampp/php/php.ini (XAMPPをインストールした場所)拡張機能のコメントを解除します 「php_pdo_mysql.dll」 そして 「php_pdo.dll」 (MySQL データベースを使用している場合)、または 「php_pdo_oci.dll」 (Oracle データベースを使用している場合)。ここで、データベースの操作を開始します。 PHP 5.1上位バージョンではすでに設定されています。
arp - コマンド
PDO の使用
まずデータベースを作成する必要があるので、ここから myDB という名前でデータベースを作成します。
データベース接続
データベースと対話するには、データベース接続が常に必要です。したがって、データベースにアクセスするための識別子、つまりデータベースの場所、データベース名、ユーザー名、パスワードを知る必要があります。
JSのグローバル変数
次に、notepad や notepad++ などのテキスト エディタで PDO を使用してデータベース接続プログラムを作成し、coonection.php という名前で保存します。 localhost/80 を使用して XAMPP サーバー上で実行します。
例
getMessage(); } ?>
出力
次の URL を使用してサーバー上で実行します。 localhost/Xampp/pdoexample/connection.php/ またはプログラムを保存した場所。
接続エラーの処理
接続エラーが発生した場合は、PDOException オブジェクトがスローされます。エラー条件を処理したい場合は例外をキャッチすることもできますし、次のように設定できるグローバル例外ハンドラーに任せることもできます。 set_Exception_handler() 関数。
例
この例では、dbUser(user-id) が間違っているため、出力でわかるように例外がスローされます。
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Echo 'Successfully connected with myDB database'; } catch(Exception $e){ Echo 'Connection failed' . $e->getMessage(); } ?>
データベース接続を閉じる
getMessage(); } // this command close the connection. $dbConn = null; ?>
出力