LoginSignup
2
1

【PHP】データベース接続

Last updated at Posted at 2024-02-08

PDOとは

「PHP Data Objects」の略で、PHPから簡単にDBにアクセスするための拡張モジュールです。データベースの種類やバージョンの違いを気にせずコードを書くことができます。

データベースに接続

PDOオブジェクトのインスタンスを作成します。以下の例では、変数$pdoに代入しています。

$pdo = new PDO($dsn, $username, $password, $options);

4つの引数を渡していて、説明は以下の通りです。

  • $dsn…データベースに接続するための必要な情報
    dbnameはデータベース名を指定
    hostはホスト名またはIPアドレスを指定
    charsetは文字セットを指定
$dsn = 'mysql:dbname=test;host=localhost;charset=utf8mb4';
  • $username…データベースに接続するためのユーザー名
    ルート権限を使う場合、デフォルトはrootです。
$username = 'root';
  • $password…データベースに接続するためのパスワード
    ルート権限を使う場合、デフォルトは空白です。以下はrootとしています。
$password = 'root';
  • $options…PDOのオプション
    接続時のオプションを連想配列で渡します。よく使われるオプションの一覧です。
$options = array(
  // エラーの際、PDOExceptionの例外をスローしてくれる
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  // SELECT文やWHERE句などの結果をカラム名をキーとする配列で返してくれる
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  // PDOのエミュレート機能を無効
  PDO::ATTR_EMULATE_PREPARES => false,
);

上記の内容の場合の書き方をまとめてみます。例外処理を追加する必要があるので、エラーが発生した場合、try~catch構文でPDOExceptionの例外をキャッチするようにします。

try {
  $dsn = 'mysql:dbname=test;host=localhost;charset=utf8mb4';
  $username = 'root';
  $password = 'root';
  $options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
  );

  $pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
  // 例外発生時の処理を記述
}

データベースの接続解除

接続した時に作成したPDOオブジェクトのインスタンスを削除することで接続を解除できます。

$pdo = null;

終わりに

今回はPHPでMySQLに接続する方法を学習しまとめてみました。今後は、データベースから取得する方法も学んでいきたいと思います。

2/10追記
PDO::ATTR_EMULATE_PREPARES => false(エミュレーションモードのプリペアードステートメントを無効)にしていることで、SQLインジェクション対策に繋がります。

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1