Developer

【PHP応用】PDO① PDOとは
2021.07.31
Lv1

【PHP応用】PDO① PDOとは

PDO①

■PDOとは

PDOとはPHP Data Objectsの略で、これを利用することでデータベースに関する処理を行うことができます。
以前mysqli関数にて説明したようなことができます。
つまり、データベース関連の処理を行いたい場合には、

  1. mysqli関数
  2. PDO

の2種類がある、ということです。

ちなみに覚えるならPDOの方をオススメします。
なぜかと言うと、mysqliではMySQLとMariaDBしか扱えないからです。
では何で基礎編でmysqliを紹介したかというと、実はPDOはオブジェクト指向が用いられているからです。
PDO自体はクラスで、そのメソッドを使ってデータベースとの処理を書いていきます。
※mysqliをオブジェクト指向で記述することも可能です。

手続き型の記述 オブジェクト指向の記述 MySQL・MariaDB以外
のプロダクト
mysqli
PDO

■データベース接続

ではさっそくPDOでデータベースに接続してみましょう!
環境はmysqli関数と同じです。
※参考:【PHP】mysqli関数① 概要

pdo_connect.php

<?php

try {

    $dsn = 'mysql:host=localhost;dbname=sample_db';
    $user = 'root';
    $pass = '';

    $dbh = new PDO($dsn, $user, $pass);

    print '接続成功';
} catch (PDOException $e) {
    print "接続失敗 :  " . $e->getMessage() . "<br/>";
    die();
}

ブラウザでアクセスしてみて接続成功と表示されればOKです。


■解説

PDOでデータベースと接続するには、PDOをインスタンス化します。

$dbh = new PDO($dsn, $user, $password);

その際、コンストラクタに3つの引数を渡します。

  1. データソース名($dsn)
  2. データベースのユーザー名($user)
  3. データベースのパスワード($password)

データベースのユーザー名($user)とデータベースのパスワード($password)は大丈夫だと思うので、データソース名の記述をみてみます。

$dsn = 'mysql:host=localhost;dbname=sample_db';

データソース名は以下のフォーマットです。セミコロン区切りで複数の情報を指定します。(順不同)
mysql:host=ホスト名またはIPアドレス;dbname=データベース名;
hostやdbname以外にcharsetで文字コードを指定することもできます。


■接続に失敗した場合

もし接続に失敗した場合は以下を確認してみてください

  • データベースを起動しているか
  • データソース名に指定したhostが正しいか
  • データソース名に指定したdbnameが正しいか
  • ユーザー名が正しいか
  • パスワードが正しいか

また、もし接続失敗 : could not find driverと表示された方については次の記事で対処法を記載していきます。