Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】PDO::connect()メソッドの使い方

connectメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

connectメソッドは、PHPのPDOクラスにおいて、データベースへの接続を確立するために用いられるメソッドです。このメソッドは、アプリケーションとデータベース間の通信経路を設定し、データベースが利用可能な状態にする役割を担います。一般的に、データベースの種類を示すDSN(Data Source Name)文字列、接続先のユーザー名、パスワード、および接続オプションなどを引数として受け取り、それらの情報に基づいてデータベースサーバーとの接続を試みます。接続に成功すると、後続のデータベース操作を行うためのPDOオブジェクト自身を返却することが期待されます。一方、提供された接続情報が誤っていたり、データベースサーバーがダウンしている場合など、接続が確立できなかった際には、通常PDOExceptionをスローしてエラーを通知します。システムエンジニアを目指す初心者の方にとって、データベースへの接続はアプリケーション開発の最も基本的な要素の一つであり、このメソッドはプログラムがデータ永続化層と対話を開始する重要な入口となります。なお、標準的なPHPのPDOクラスでは、データベースへの接続処理は主にクラスのコンストラクタ __construct を通じて行われる点が特徴です。

構文(syntax)

1<?php
2$pdo = new PDO(
3    'mysql:host=localhost;dbname=testdb;charset=utf8mb4',
4    'your_username',
5    'your_password'
6);

引数(parameters)

string $dsn, ?string $username = NULL, ?string $password = NULL, ?array $options = NULL

  • string $dsn: 接続するデータベースとドライバに関する情報(DSN)を指定する文字列
  • ?string $username = NULL: データベースに接続する際のユーザー名を指定する文字列。省略可能
  • ?string $password = NULL: データベースに接続する際のパスワードを指定する文字列。省略可能
  • ?array $options = NULL: 接続オプションを指定する連想配列。省略可能

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

PHP PDO で MySQL に接続する

1<?php
2
3/**
4 * MySQL データベースに PDO を使用して接続します。
5 *
6 * システムエンジニアを目指す初心者の方へ:
7 * PHP の PDO クラスはデータベース接続を行うための標準的な方法です。
8 * ここで示される 'connect' は、PDO のコンストラクタ (new PDO(...)) を
9 * 呼び出すことによって実際の接続が確立されることを意味します。
10 *
11 * @return PDO|null 成功した場合は PDO オブジェクトを、失敗した場合は null を返します。
12 *                  リファレンス情報では「戻り値なし」とありますが、実際の PDO コンストラクタは
13 *                  接続成功時に PDO オブジェクトを返します。このオブジェクトは、
14 *                  その後のデータベース操作に必要不可欠です。
15 */
16function connectToMySQL(): ?PDO
17{
18    // データベースの接続情報 (ご自身の環境に合わせて変更してください)
19    $host    = 'localhost';         // データベースサーバーのホスト名
20    $db_name = 'your_database_name';// データベース名
21    $user    = 'your_username';     // データベースユーザー名
22    $password = 'your_password';    // データベースパスワード
23    $charset = 'utf8mb4';           // 文字セット (日本語などの多バイト文字対応のため推奨)
24
25    // DSN (Data Source Name) 文字列の生成
26    // データベースの種類、ホスト、データベース名、文字セットを指定します。
27    $dsn = "mysql:host={$host};dbname={$db_name};charset={$charset}";
28
29    // PDO 接続オプション
30    // これらは接続動作を制御するための設定です。
31    $options = [
32        // エラーモードを例外 (PDOException) に設定:
33        // これにより、データベース操作でエラーが発生した場合に例外がスローされ、
34        // try-catch ブロックでエラーを捕捉しやすくなります。開発環境で強く推奨されます。
35        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
36        // デフォルトのフェッチモードを連想配列に設定:
37        // クエリ結果を連想配列として取得できるようになります。
38        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
39        // プリペアドステートメントのエミュレーションを無効に設定:
40        // セキュリティとパフォーマンスのために、データベース本来のプリペアドステートメント機能を使用します。
41        PDO::ATTR_EMULATE_PREPARES   => false,
42    ];
43
44    try {
45        // 新しい PDO インスタンスを作成し、データベースに接続します。
46        // ここで実際のデータベース接続が試行されます。
47        $pdo = new PDO($dsn, $user, $password, $options);
48        echo "データベースに正常に接続しました!\n";
49        return $pdo; // 接続に成功したら PDO オブジェクトを返します
50    } catch (PDOException $e) {
51        // 接続に失敗した場合、PDOException が捕捉されます。
52        // エラーメッセージを表示し、null を返して接続失敗を通知します。
53        // 本番環境では、ユーザーに直接エラーを表示せず、ログに記録することが一般的です。
54        echo "データベース接続に失敗しました: " . $e->getMessage() . "\n";
55        return null;
56    }
57}
58
59// --- データベース接続関数の使用例 ---
60$pdoConnection = connectToMySQL();
61
62if ($pdoConnection) {
63    echo "PDO オブジェクトが利用可能です。これを使ってデータベース操作を実行できます。\n";
64
65    // 例: 簡単なクエリを実行して接続がアクティブか確認 (オプション)
66    try {
67        $stmt = $pdoConnection->query('SELECT VERSION()');
68        $version = $stmt->fetchColumn();
69        echo "MySQL バージョン: " . $version . "\n";
70    } catch (PDOException $e) {
71        echo "クエリ実行中にエラーが発生しました: " . $e->getMessage() . "\n";
72    }
73
74    // スクリプトの終了時に PHP は自動的に接続を閉じますが、
75    // 明示的に接続を閉じるには以下のように PDO オブジェクトを破棄します。
76    // $pdoConnection = null;
77} else {
78    echo "データベース接続が確立されませんでした。クエリは実行できません。\n";
79}

PHP 8でMySQLデータベースに接続するには、PDO(PHP Data Objects)クラスを使用します。リファレンス情報にはconnectという名前が記載されていますが、実際にはnew PDO(...)というコンストラクタを呼び出すことでデータベースへの接続が確立されます。

このコンストラクタは、主に4つの引数を取ります。最初の$dsn(Data Source Name)は、接続先のデータベースの種類(例:mysql)、ホスト名、データベース名、文字セットなどを指定する重要な文字列です。次に、データベースの$username$passwordがオプションで指定され、ユーザー認証に利用されます。最後の$optionsは、エラーモードやデータのフェッチ形式など、PDOの動作を細かく設定するための配列です。

リファレンス情報では「戻り値なし」とされていますが、new PDO(...)が成功すると、その後のデータベース操作に必要となるPDOオブジェクトが返されます。接続に失敗した場合はPDOExceptionがスローされるため、サンプルコードのようにtry-catchブロックで囲み、エラーを適切に処理することが推奨されます。

このサンプルコードは、上記の引数を設定し、安全にMySQLデータベースへ接続する一連の流れと、接続後の簡単なクエリ実行例を示しています。

リファレンスのPDO::connectは、new PDO()コンストラクタでの接続確立を指し、成功時にはPDOオブジェクトを返します。これはその後のデータベース操作に必須です。サンプルコードのホスト、DB名、ユーザー、パスワードは、ご自身の環境に合わせて必ず修正してください。try-catchPDOExceptionを捕捉し、PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTIONに設定することで、エラー処理が確実になります。セキュリティ・パフォーマンスのため、PDO::ATTR_EMULATE_PREPARESfalseとし、データベース本来のプリペアドステートメントを使用してください。本番環境では、エラーをユーザーに直接見せずログに記録するよう変更してください。

PHP PDO で SQL Server に接続する

1<?php
2
3/**
4 * SQL Server データベースへの接続を試みます。
5 * PHPのPDO拡張機能を使用し、指定された接続情報に基づいてPDOインスタンスを生成します。
6 *
7 * @param string $serverName データベースサーバーのホスト名またはIPアドレス (例: "localhost", "your_server_ip,1433", "localhost\SQLEXPRESS")
8 * @param string $databaseName 接続するデータベースの名前
9 * @param string $username データベース接続のためのユーザー名
10 * @param string $password データベース接続のためのパスワード
11 * @return PDO|null 接続に成功した場合はPDOオブジェクト、失敗した場合はnull
12 */
13function connectToSqlServer(string $serverName, string $databaseName, string $username, string $password): ?PDO
14{
15    // SQL Server用のDSN (Data Source Name) を構築します。
16    // このDSNは、PHPの `sqlsrv` PDOドライバーがインストールされていることを前提としています。
17    // 例: "sqlsrv:Server=localhost;Database=YourDatabaseName"
18    $dsn = "sqlsrv:Server={$serverName};Database={$databaseName}";
19
20    // PDO接続オプションを設定します。
21    $options = [
22        // エラー発生時にPDOExceptionをスローするように設定します。
23        // これにより、接続失敗時にtry-catchブロックでエラーを処理できます。
24        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
25        // SQL Serverドライバー固有のオプション (例: 数値型をPHPの数値型としてフェッチ、UTF-8エンコーディング)
26        PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE => true,
27        PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8,
28    ];
29
30    try {
31        // 新しいPDOインスタンスを作成することで、データベースに接続します。
32        // PHP 8では、PDOコンストラクタが実質的な「connect」の役割を果たします。
33        // ここで `$dsn`, `$username`, `$password`, `$options` がPDOコンストラクタに渡されます。
34        $pdo = new PDO($dsn, $username, $password, $options);
35        echo "SQL Server への接続に成功しました。\n";
36        return $pdo;
37    } catch (PDOException $e) {
38        // 接続失敗時のエラーをキャッチし、ログに記録します。
39        // システムエンジニアは、エラーログを確認して問題を特定します。
40        error_log("SQL Server への接続に失敗しました: " . $e->getMessage());
41        echo "エラー: SQL Server への接続に失敗しました。詳細についてはエラーログを確認してください。\n";
42        return null;
43    }
44}
45
46// --------------------------------------------------------------------------------
47// サンプルコードの使用例: 実際の接続情報を設定してテストします。
48// --------------------------------------------------------------------------------
49
50// 実際のSQL Serverの接続情報に合わせて以下の値を変更してください。
51$server = "localhost";        // 例: "your_sql_server_ip", "hostname", "localhost\SQLEXPRESS" など
52$database = "YourDatabaseName"; // 接続したいデータベース名
53$user = "YourUsername";       // データベースに接続するためのユーザー名
54$pass = "YourPassword";       // ユーザーのパスワード
55
56// connectToSqlServer関数を呼び出して、SQL Serverへの接続を試みます。
57$pdoConnection = connectToSqlServer($server, $database, $user, $pass);
58
59if ($pdoConnection) {
60    // 接続が成功した場合、ここでデータベースに対する操作(クエリの実行など)を行うことができます。
61    echo "PDOオブジェクトが正常に生成されました。データベース操作を開始できます。\n";
62
63    // 例: 簡単なクエリを実行してみる (コメントアウトを外して試すことができます)
64    /*
65    try {
66        $stmt = $pdoConnection->query("SELECT @@SERVERNAME AS ServerName, GETDATE() AS CurrentDateTime");
67        $result = $stmt->fetch(PDO::FETCH_ASSOC);
68        echo "サーバー名: " . $result['ServerName'] . "\n";
69        echo "現在のデータベース時刻: " . $result['CurrentDateTime'] . "\n";
70    } catch (PDOException $e) {
71        error_log("クエリ実行エラー: " . $e->getMessage());
72        echo "エラー: クエリの実行中に問題が発生しました。\n";
73    }
74    */
75
76    // スクリプトの終了時にPDO接続は自動的に閉じられます。
77    // 明示的に接続を閉じるには、PDOオブジェクトをnullに設定します。
78    // $pdoConnection = null;
79} else {
80    echo "SQL Server への接続を確立できませんでした。設定を確認してください。\n";
81}

このコードは、PHP 8を使用してSQL Serverデータベースへ接続するための基本的な方法を示しています。PHPのPDO(PHP Data Objects)は、様々な種類のデータベースに対して統一された方法で接続し、操作するための機能です。

データベースへの接続は、new PDO(...)という形でPDOクラスの新しいインスタンスを生成する際に行われます。リファレンスに示されるconnectという概念は、実質的にこのPDOコンストラクタの呼び出しがその役割を担います。

コンストラクタには、主に以下の引数を渡します。 一つ目の$dsn(データソース名)は、接続先のデータベースの種類、サーバー名、データベース名といった詳細な接続情報を文字列で指定します。SQL Serverの場合、「sqlsrv:Server=サーバー名;Database=データベース名」のような形式です。 次に、データベースにアクセスするための$username$passwordを渡します。 最後に、$optionsとして接続時の挙動を制御する追加設定を配列で渡すことができます。例えば、エラー発生時にPDOExceptionをスローするように設定することで、接続失敗を確実に捕捉し、適切なエラー処理を行うことが可能になります。

接続が成功すると、以降のデータベース操作に利用できるPDOオブジェクトが生成されます。一方、接続に失敗した場合はPDOExceptionがスローされるため、try-catchブロックを用いてエラーを適切に処理し、接続に関する問題を特定することがシステムエンジニアにとって重要です。このサンプルコードは、PHPでSQL Serverへ安全かつ効率的に接続するための基本的な手順を提供します。

PHP 8において、PDO::connectという直接のメソッドは存在せず、new PDO()コンストラクタがデータベースへの接続を確立します。SQL Serverへの接続には、PHPにsqlsrvドライバーのインストールが必須です。DSN(Data Source Name)はsqlsrv:Server=...;Database=...のように、ドライバーに合わせた正確な形式で記述してください。データベース接続のユーザー名やパスワードは、セキュリティ上の理由から、本番環境ではコードに直接記述せず、環境変数や安全な設定ファイルから読み込むことを強く推奨します。また、try-catchブロックによるPDOExceptionの適切な処理と、PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTIONに設定することで、接続失敗時のエラーを確実に捕捉し、問題特定に役立てられます。

関連コンテンツ