2021.07.31
【PHP応用】PDO① PDOとは
■PDOとは
PDOとはPHP Data Objectsの略で、これを利用することでデータベースに関する処理を行うことができます。
以前mysqli関数にて説明したようなことができます。
つまり、データベース関連の処理を行いたい場合には、
- mysqli関数
- 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(); }
■解説
PDOでデータベースと接続するには、PDOをインスタンス化します。
$dbh = new PDO($dsn, $user, $password);
その際、コンストラクタに3つの引数を渡します。
- データソース名($dsn)
- データベースのユーザー名($user)
- データベースのパスワード($password)
データベースのユーザー名($user)とデータベースのパスワード($password)は大丈夫だと思うので、データソース名の記述をみてみます。
$dsn = 'mysql:host=localhost;dbname=sample_db';
データソース名は以下のフォーマットです。セミコロン区切りで複数の情報を指定します。(順不同)
mysql:host=ホスト名またはIPアドレス;dbname=データベース名;
hostやdbname以外にcharsetで文字コードを指定することもできます。
■接続に失敗した場合
もし接続に失敗した場合は以下を確認してみてください
- データベースを起動しているか
- データソース名に指定したhostが正しいか
- データソース名に指定したdbnameが正しいか
- ユーザー名が正しいか
- パスワードが正しいか
また、もし接続失敗 : could not find driverと表示された方については次の記事で対処法を記載していきます。