#関連する学習に関する推奨事項:mysql チュートリアル、php プログラミング
## この内容チュートリアルでは、PHP の組み込み Mysqli 拡張機能を介して MySQL データベースと対話する方法を紹介しました。今日は、別の PHP 組み込みデータベース拡張機能 - PDO (正式名は PHP Data Objects、つまり PHP データ) を見ていきます。オブジェクト。
PDO の導入とインストール
以前に推奨した PHP ローカル統合開発環境には、すべて PDO 拡張機能のサポートが統合されています (以下は、Laragon のプリインストールされた PHP 拡張機能です):
And It
PDO 拡張子に加えて、一致する特定のデータベース拡張子 pdo_mysql
も存在することがわかります。この特定の拡張子を使用してのみ MySQL データベースにアクセスできます。さらに、PDO は統合されたデータベース アクセス インターフェイスを提供するため、PDO インターフェイスを実装する特定のデータベース拡張機能はまったく同じ方法でデータベースにアクセスでき、アプリケーションがデータベースを切り替える必要がある場合にデータベースを再構築する必要はありません。これのみに基づいて、MySQLi 拡張機能を捨てて PDO を採用することができます。 Laradock をインストールしている場合は、
コンテナを起動して、そのプリインストールされた PHP 拡張機能を表示できます。より具体的な PDO データベース ドライバーのサポートが含まれていることがわかります:
は PostgresSQL データベース ドライバーを表し、pdo_sqlite
は SQLite データベース ドライバーを表します。 データベース接続と基本的なクエリの確立
PDO 拡張機能を介してデータベース接続を確立するには、PDO オブジェクトを直接インスタンス化するだけです。次のような簡単なサンプル コードを作成します (
php_learning/mysql ディレクトリに pdo.php を作成します)
ストレージ コード): <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;"><?php
// 设置连接属性
$dsn = &#39;mysql:host=127.0.0.1;port=3306;dbname=test;charset=utf8mb4&#39;;
$user = &#39;root&#39;;
$pass = &#39;root&#39;;
try {
// 建立连接
$pdo = new PDO($dsn, $user, $pass);
// 执行 SQL 查询
$sql = $pdo->quote(&#39;SELECT * FROM `post` ORDER BY `id` DESC&#39;);
$res = $pdo->query($sql);
// 打印查询结果
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
foreach ($res as $row) {
print_r($row);
}
} catch (PDOException $exception) {
// 如果数据库操作出现异常,则捕获并打印
printf("Error: %s\n", $exception->getMessage());
} finally {
// 释放 PDO 连接实例
$pdo = null;
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
PDO オブジェクトをインスタンス化してデータベース接続を作成する場合、少なくとも 3 つの文字列型パラメーターを渡す必要があります。最初のパラメーターには、データベース ドライバーの種類などのデータベース ホスト情報が含まれます。 (ここでは
)、IP アドレス (ローカル アドレスは 127.0.0.1
)、ポート番号 (オプション、デフォルトは 3306
)、および名前接続するデータベースの情報(test
)、文字コード情報(utf8mb4
)など。第2パラメータはユーザー名、第3パラメータはパスワードです。 次に、PDO オブジェクト インスタンス
でクエリ メソッドを呼び出して、指定された SQL ステートメントを実行してデータベースと対話します (追加、削除、変更、確認)。この関数の機能は mysqli_escape_string
と似ています。 SQL クエリを実行すると、クエリ結果セットが返され、ループ トラバーサルを通じて出力できます。
また、PDO 拡張機能によるデータベース接続やクエリ操作中にエラーが発生した場合、例外がスローされます。プログラムの堅牢性を高めるために、
try...catch を使用しています。 ... このステートメント ブロックは例外に関係なく実行されるため、ステートメントは PDOException
例外をキャプチャし、エラー メッセージを出力し、最後に finally
ステートメントを通じて PDO オブジェクト インスタンスを解放します。例外がスローされるかどうか。 Run
テスト用に組み込み HTTP サーバーを起動し、http://localhost:9000/mysql/pdo.php
にアクセスします。ブラウザで、通常の印刷結果を確認できます:
上記のコードの接続情報を変更してみましょう。たとえば、パスワード値を
test## に調整します。 #, this PDO 例外がキャッチされ、エラー メッセージが出力されます:注: エラー メッセージ内の IP アドレスは、 MySQLのDockerコンテナ。このエラーは、IP アドレスの問題ではなく、パスワードが間違っていることが原因で発生します。
関連記事をさらに知りたい場合は、php mysql 列に注目してください。
以上が基本的な使用を実現するための PDO 拡張機能を介した MySQL データベースとの対話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。