PHPでは、PDO(PHPデータオブジェクト)は、さまざまなタイプのデータベースを接続および操作するための軽量で一貫した方法を提供するデータベースアクセス抽象化レイヤーです。 PDOを使用する場合、最初にPDO :: __コンストラクトを介してPDOオブジェクトを作成する必要があります。これは、データベースとの対話に役立ちます。この記事では、 PDO :: __の基本的な使用法を詳細に説明し、データベース接続をすばやく開始する方法について説明します。
PDOは、開発者がさまざまなタイプのデータベースシステム(MySQL、PostgreSQL、SQLiteなど)間で統一されたデータ操作を実行できるようにするPHPの拡張ライブラリです。前処理ステートメントをサポートするだけでなく、SQL注入攻撃を防ぎます。これは、最新のPHP開発でデータベース操作を実行するための推奨方法です。
PDOを介して、開発者は各データベースシステムに異なる接続コードを記述する必要がなく、統一された方法でデータベースにアクセスできます。
PDO :: __コンストラクトは、PDOオブジェクトの作成に使用されるPDOクラスのコンストラクターです。基本的な構文は次のとおりです。
<span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
</span></span>$ DSN(データソース名) :データソース名、データベースタイプ、データベースホスト、データベース名、およびその他の情報の指定。
$ username :データベースに接続するために必要なユーザー名。
$パスワード:データベースに接続するために必要なパスワード。
$オプション:PDOの動作を構成するオプションパラメーター(例外モード、文字セット設定など)。
<span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'mysql:host=localhost;dbname=testdb;charset=utf8'</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">'root'</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-variable">$options</span></span><span> = [
PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>, </span><span><span class="hljs-comment">// エラーモードを例外に設定します</span></span><span>
PDO::</span><span><span class="hljs-variable constant_">ATTR_DEFAULT_FETCH_MODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">FETCH_ASSOC</span></span><span> </span><span><span class="hljs-comment">// デフォルトのデータ収集方法を連想配列に設定します</span></span><span>
];
</span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"接続に正常に!"</span></span><span>;
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"接続に失敗しました: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span></span>ここでは、 $ DSNには、データベースタイプ(MYSQL)、データベースホスト(LocalHost)、データベース名(TESTDB)、および文字セット(UTF8)が含まれます。
pdo :: attr_errmode => pdo :: errmode_exceptionを使用して、エラーモードを例外に設定します。このようにして、データベース接続またはクエリエラーが発生すると、PDOは例外をスローします。
pdo :: attr_default_fetch_mode => pdo :: fetch_assocデフォルトのデータ収集方法を連想配列に設定します。
異なるデータベースシステムには、異なるDSN形式が必要です。いくつかの一般的なデータベースタイプDSN形式は次のとおりです。
<span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'mysql:host=localhost;dbname=testdb;charset=utf8'</span></span><span>;
</span></span> <span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'pgsql:host=localhost;port=5432;dbname=testdb;'</span></span><span>;
</span></span> <span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'sqlite:/path/to/database.db'</span></span><span>;
</span></span> <span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'sqlsrv:Server=localhost;Database=testdb;'</span></span><span>;
</span></span>PDOは、データベース接続が接続されているときに構成できる一般的に使用される接続オプションを提供します。
PDO :: ATTR_ERRMODE :エラーモードを設定します。
PDO :: ERRMODE_SILENT :サイレントモード、エラーが報告されていない(デフォルト値)。
PDO :: ERRMODE_WARNING :警告モード、PHP警告を発行します。
PDO :: ERRMODE_EXCEPTION :例外モード、PDOEXCEPTION例外をスローします。
PDO :: attr_default_fetch_mode :デフォルトのデータ取得方法を設定します。
PDO :: FETCH_ASSOC :連想配列。
PDO :: FETCH_OBJ :オブジェクトを返します。
PDO :: FETCH_NUM :数値インデックスアレイ。
pdo :: attr_emulate_prepares :前処理ステートメントをシミュレートするかどうかを設定します。
false :シミュレートされていない、データベースのネイティブの前処理ステートメントを使用します。
True :前処理ステートメントをシミュレートします。
<span><span><span class="hljs-variable">$options</span></span><span> = [
PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>,
PDO::</span><span><span class="hljs-variable constant_">ATTR_DEFAULT_FETCH_MODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">FETCH_ASSOC</span></span><span>,
PDO::</span><span><span class="hljs-variable constant_">ATTR_EMULATE_PREPARES</span></span><span> => </span><span><span class="hljs-literal">false</span></span><span>
];
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
</span></span>PDO :: __コンストラクトを使用する場合、データベース接続が失敗した場合、 PDOException例外がスローされます。したがって、 Try ... CATCHステートメントを使用して例外をキャッチし、エラー処理を実行できます。
<span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"数据库接続に失敗しました: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span></span>例外をキャッチすることにより、エラーが発生したときにプログラムを直接クラッシュさせないようにすることができ、エラー情報も記録できます。
PDO :: __コンストラクトは、PDOオブジェクトを作成するための重要な関数です。この関数を使用して、データベースへの接続を簡単に実装します。データベースに接続するときは、通常、PDO動作を構成するためにDSN、データベースのユーザー名、パスワード、およびオプションの接続オプションを渡します。
PDOの基本的な使用法を習得した後、さまざまなデータベースに柔軟に接続し、PDOが提供するリッチ機能を介してデータを操作できます。簡単なWebアプリケーションまたは複雑なエンタープライズレベルのシステムを開発している場合でも、PDOは効率的で安全なデータベース操作サポートを提供できます。
関連タグ:
PDO