PHPからMySQLに接続する方法(PDOを使います)

投稿日: 作成:   更新:

PHPのMySQLに接続する方法を解説します。

  • PHPからMySQLへ接続したい
  • SELECT文で条件を指定して実行するには?

このような内容について解説します。

私はWEB開発中心に、フロントエンド、サーバーサイド、サーバー構築など経験豊富なエンジニアです。
これからプログラミングを始める方に向けて、少しでも分かりやすく解説していきたいと思います。

WEBシステム開発において、MySQLやPostgreSQLなどへのデータベース接続はほぼ必須なので、これを機に覚えましょう。

それでは行きましょう!

PDOとは

データベースに依存しないでDB接続することができるPHP標準クラスです。

PHP5より前は、データベースの種類によって関数を使い分けていました。

例を挙げると、MySQLへの接続は「mysql_connect関数」、PostgreSQLへの接続は「pg_connect関数」を使う必要がありました。

このように関数を分けていたのを、PDOクラスを使うことで関数を意識する必要がなくなりました。

サンプルデータを用意する

今回は、次のサンプルデータ「users」テーブルを用意しました。

データは「山田太郎、山田花子」の2レコード入っています。

こちらのテーブルにPHPからPDOクラスを使って接続したいと思います。

PHPからMySQL接続

MySQLに接続するソースコードを書いてみました。

まず「new PDO」で、MySQLの接続情報を指定して$pdo変数に格納します。

オプションとして「ホスト名、データベース名、ユーザー名、パスワード」と、レコード列名をキーとして取得させるため「PDO::FETCH_ASSOC」を設定しています。

<?php

// データベースに接続
$pdo = new PDO(
    // ホスト名、データベース名
    'mysql:host=localhost;dbname=testdb;',
    // ユーザー名
    'root',
    // パスワード
    '',
    // レコード列名をキーとして取得させる
    [ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]
);

// SQL文をセット
$stmt = $pdo->prepare('SELECT * FROM users');

// SQL文を実行
$stmt->execute();

// ループして1レコードずつ取得
foreach ($stmt as $row) {
    var_dump($row);
}

?>

実行結果:

テーブルにあった2レコードを表示することができました。

今回は「var_dump($row);」で一気に画面出力していますが、

実際に1つずつ使うには「$row[‘name’]、$row[‘address’]」のように連想配列としてキー名を指定して使用します。

条件指定してSQL実行

SQL文に条件指定するには、PDOクラスのbindValue関数を使用します。

「PHPからMySQL接続」で説明したソースコードに、条件指定を追加しています。

「id」が「1」のレコードを取得するように条件指定しています。

<?php

$pdo = new PDO(
    'mysql:host=localhost;dbname=testdb;',
    'root',
    '',
    [ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]
);

// 条件指定したSQL文をセット
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');

// 「:id」に対して値「1」をセット
$stmt->bindValue(':id', 1);

$stmt->execute();

foreach ($stmt as $row) {
    var_dump($row);
}

?>

実行結果:

「id=1」の「山田太郎」を取得することができました。

まとめ

PHPのMySQLに接続する方法を解説しました。

  • PDOとは(データベースに依存しないPHP標準クラス)
  • PHPからMySQL接続(ソースコードの書き方)
  • 条件指定してSQL実行(bindValue関数を使用する)

今回はPDOクラスを使ってMySQLへ接続しましたが、
実践でのデータベース接続は Laravelや CakePHPなどのフレームワークのルールに従って接続します。

ですが、MySQLデータベース接続に必要な「ホスト名、データベース名、ユーザー名、パスワード」の指定の仕方・考え方はPDOクラスでも同じです。


プログラミングスクールをお探しの方へ

プログラミング学習を挫折せずに続けて成功できる人は

「目的目標を明確にすること」
「質問・相談できる環境を作ること」
「自己解決スキルを身に着けること」

この3つを大切にしてると思います。

ただ漠然とプログラミング学習をしているだけでは
すぐに身に付きませんので、プログラミングスクールがおすすめです。

  • テックキャンプ
    本気でIT業界に転職したい方におすすめです。
    転職できなかったら全額返金があります。
  • DMM WEBCAMP
    国から認定されているスクールです。
    やむなく離職中の方など、条件を満たしている方は教育訓練給付金が支給されます。
  • TechAcademy
    1週間の無料体験があります。
    気軽にスクールを体験したい方向けです。