upstr web

PHP:PDOによるDB接続

January 10, 2020

PHPにおけるデータベース接続について解説します。

PDOとは?

PDOとは、PHP Data Objectsの略です。

PDOによるDB接続のメリットは、データベースの種類やバージョンの違いを問わず使用できることです。

仕様変更によるデータベースの変更や、アップデート等にも対応可能です。

PDO実装サンプル

下記のサンプルコードは、PDOの使用例です。

try {
      $pdo = new PDO(
        'mysql:dbname=データベース名;host=ホスト名;charset=utf8mb4',
        'ユーザ名',
        'パスワード');
    
  // PDOのエラーレポートを表示
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  
} catch(PDOException $e) {
  echo 'DB接続エラー: ' . $e->getMessage();
  var_dump($e);
}

ホスト名は、ローカル環境の場合は「localhost」、ユーザ名は「root」、パスワードは「‘(空白)‘」となります。 charset=の後には、文字コードが入ります。

基本的には、「utf8」でOKで、値として絵文字や中国語なども許容するなら「utf8mb4」を記述します。

      // ローカル接続
      $pdo = new PDO(
        'mysql:dbname=データベース名;host=localhost;charset=utf8mb4',
        'root',
        '');

PDOの詳しい使い方は、PHP公式マニュアルを参照してください。

データベースの値を取得

PDOで接続したデータベースからテーブルの値を表示する方法は以下の通りです。

$sql = "SELECT * FROM items ORDER BY date";

// 1.PDOのprepareメソッドでSQL文を準備
$stmt = $pdo->prepare($sql);

// 2.PDOstatementメソッドで使用するプレースホルダに紐付け
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindValue(':useId', $userId, PDO::PARAM_INT);

// 3.prepareで準備されたPDOstatementオブジェクトを実行
$stmt->execute();

PDOでデータを取得するには、まずSQL文をprepareメソッドでプリペアドステートメントに変換します。