ブログ

日々の開発で得た知見や、技術的な発見をアウトプットしていきます。フロントエンド開発を中心に、実装のヒントやトラブルシューティング、新しい技術の検証結果など、実践的な情報を発信。エンジニアとしての成長の記録であり、同じ課題に直面する方々への導きとなることを目指しています。

BLOG

PHPからMySQLに接続する方法

どーも!

今回はPHPからMySQLに接続する方法を初心者にも分かり易く説明しようと思います。

PHPからデータベースに接続する方法はいくつかありますが今回は「PDO」を使って説明していきたいと思います。

今回はテストというデータベースを用意したので接続していこうと思います。

PDOとは?

PDO は PHP Data Objects の略で、データベース接続クラスのことです。

データベース操作はシステムごとに命令が異なりますが、PDOなら同じ関数で操作することが可能です。

PDOの書き方

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

PDOを使ってデータベースに接続するときはこのようなコードになります。

まず$dbhですがこれはデータベース接続の時によく使われる変数名です。

データベースハンドルの略でこれからデータベースを操作するよーということです。

その次のnew PDOですがPDOのクラスを使うという意味で呼び出しています。

$dsnにはデータベースの情報が入ります。

今回の場合だと

$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';

このような形になります。

$userと$passですがここは初期設定では'root'となっています。

それではデータベースに接続していきたいと思います。

<?php
 $dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
 $user = 'root'; // ここは設定したユーザーを入れてください
 $pass = 'root'; // ここは設定したパスワードを入れてください

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

 var_dump($dbh);
?>

これでphpのファイルを開いてみます。

このようにPDOのオブジェクトが返されているので接続ができたということになります。

ただこれだけだと接続に成功したのか失敗したのか分かりづらいですよね。

その為に接続に失敗した時の処理処理を作る必要があります。

try~catchとは?

接続に失敗した時try~catchというものを使います。

これはデータベースのエラーをチェックできる構文で、例外処理と呼ばれます。

・書き方

try {
 //接続に成功した時の処理を書く。
} catch() {
 //エラーが発生した時の処理を書く。
}

このような形になります。

try~catchを書く前にPDOにオプションを設定してSQLのエラーを表示する設定を追加します。

$dbh = new PDO($dsn,$user,$pass,[
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,//エラーを表示するオプション
 ]);

そしてtry~catchを書くとこのようになります。

<?php
 $dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
 $user = 'root'; // ここは設定したユーザーを入れてください
 $pass = 'root'; // ここは設定したパスワードを入れてください

 try {
    $dbh = new PDO($dsn,$user,$pass,[
       PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]);
    echo '接続成功';
    $dbh = null;
  } catch(PDOException $e) {
    echo '接続失敗'. $e->getMessage();
    exit();
  };

?>

catch()の中ですが$eの中にエラーの内容が入ります。

それをgetMessage()で出力するという形になります。

エラーの場合この処理を終わらせて欲しいのでexit();と入れておきます。

成功した場合は「接続成功」と表示され$dbh = null;と書くことで接続が終了したという意味になります。

これでphpファイルを開いてみましょう。

接続に成功していますね。

今度はわざとユーザー名を間違えてエラーの際の例外処理を見てみたいと思います。

接続失敗というテキストとエラー内容が表示されています。

まとめ

データベースには接続できましたでしょうか?

その内データベースから要素を取り出す方法の記事もアップしたいと思います。

お疲れ様でした。