phpでDBを使用できると、サービスの幅がとてつもなく広がります。今回はphpでDBと連携をとる時の基礎をやっていきます。
今回行うDBへ連携する時の項目は下記です。
- DB接続構文でDBに接続する
- try catch構文で例外対応する
- DB接続のオプションを理解する
DB接続構文でデータベースに接続する
phpでDBを使用したい場合の構文は下記です。DBにアクセスする文法です。
$変数1 = "mysql:host=DBのURL;dbname="DB名";charset=文字コード;
$変数2 = new PDO($変数1, ログインユーザー名, ログインパスワード);
1つずつ説明します。まずは下記を用意します。
- DBのURL
- 作成したデータベース名
- 文字コード
- DBのユーザー名
- DBのパスワード
①DBのURLを用意します。自分自身にしている場合は「localhost」でも大丈夫です。
②作成したデータベース名を記入します。DBを作成していない場合は先に作成してください。
③文字コードを決めておきます。
①②③を使用して接続するDBを指定して、変数に入れます。これが一行目
$変数1 = "mysql:host=DBのURL;dbname="DB名";charset=文字コード;
④DBのユーザー名を入力します。DB専用のユーザーを作成した場合は記入してください。
⑤ DBのパスワードを入力します。 DB専用のユーザーを作成した 場合はそのパスワードを記入してください。
④⑤と先程作成した変数を使用して、PDOのインスタンスを作成します。これが2行目
$変数2 = new PDO($変数1, ログインユーザー名, ログインパスワード);
自分の環境に合わせてコードを書いてみる
①ここでは自分自身のパソコンをDBサーバーにしているので、DBのURLは「localhost」。
②DB名は「mydatabase」というDB作成しました。変数「$DB_DATABASE」を作成してここに入れておきます。
③文字コードをここでは「utf8」にしておきます。 変数 「$DB_OPTION 」を作成してここに入れておきます。
④ユーザーはデフォルトの「root」にします。 変数「$DB_USERNAME」を作成してここに入れておきます。
⑤rootのデフォルトパスワードはないので、空白にします。 変数「$DB_PASSWORD」を作成してここに入れておきます。
接続するDBを指定して 変数「$PDO_DSN」に入れました。
変数「$PDO_DSN」 を使用して新しいPDOインスタンスを作成しました。それを変数「$db」に入れました。
わたくしの環境ではコードは下記になりました。
$DB_DATABASE = 'mydatabase';
$DB_USERNAME = 'root';
$DB_PASSWORD = '';
$DB_OPTION = 'charset=utf8';
$PDO_DSN = "mysql:host=localhost;dbname=" . $DB_DATABASE . ";" . $DB_OPTION; #DSN データソースネームmysqlの場合
$db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD);
次はDBに接続失敗した時の為に、例外処理を追加します。
try catch構文
phpで通常try catchの構文基礎は下記のコードです。
try{
ここに通常の処理を書く
throw new Exception();
} catch(Exception $e){
ここに例外の処理を書く
};
その後に「throw new Exception();」で例外を投げます。catchに処理が飛びます。「catch(Exception $e)」の後に例外処理を入力します。
通常のtry-catch構文を詳しく知りたい場合は、「【php基礎】try~catchで例外処理をする」の記事をご覧ください。
今回PDOでDBに接続する場合ですので、少し例外処理コードが変わっています。
DB接続時、try catch構文で例外対応する
DBにPDOで接続する場合の、例外処理コードは下記です。
try{
ここにDB接続の処理を書く
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
} catch(PDOException $e){
ここに例外の処理を書く
};
tryの後にDBに接続するコードを記入する。オプションがありますので、そこで例外処理するオプションを付けます。
オプションは[]で囲みます。例外のオプションは[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]になります。
DB接続失敗すると「catch(PDOException $e)」に飛びます。
これでDB接続時の例外処理が完成しました。
先程のDBの接続する処理に、今回の例外処理を追加するとコードは下記になりました。
try{
$DB_DATABASE = 'mydatabase';
$DB_USERNAME = 'root';
$DB_PASSWORD = '';
$DB_OPTION = 'charset=utf8';
$PDO_DSN = "mysql:host=localhost;dbname=" . $DB_DATABASE . ";" . $DB_OPTION;
$db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
[ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
} catch(PDOException $e){
例外処理;
}
DB接続のオプションを理解する
今回「 PDO::ERRMODE_EXCEPTION 」オプションで例外処理をしましたが、エラー系は下記3つです。
- PDO::ERRMODE_EXCEPTION
- PDO::ERRMODE_SILENT
- PDO::ERRMODE_WARNING
他のオプションとしては沢山ありますが、特に使用しないので割愛します。
興味があればググってみて下さい。
DBにアクセスする時の構文を理解するのまとめ
DBのURL、DB名、文字コード、DBのユーザー、DBのパスワードを用意して、コードを書きましょう。
PDOのインスタンスを作成して変数に入れましょう。
try-catch構文で例外処理を入れましょう。(通常の例外処理と少し違うので注意)
最終的に私の環境では下記のコードになりました。
<?php
try{
$DB_DATABASE = 'mydatabase';
$DB_USERNAME = 'root';
$DB_PASSWORD = '';
$DB_OPTION = 'charset=utf8';
$PDO_DSN = "mysql:host=localhost;dbname=" . $DB_DATABASE . ";" . $DB_OPTION;
$db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
[ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
echo 'DB接続成功';
} catch(PDOException $e){
echo 'DB接続失敗';
}
?>
今回は「通常の処理」にDB接続のコードを入力、わかりやすいように「echo ‘DB接続成功’;」を追記しています。
例外処理には「echo ‘DB接続失敗’;」を追記しています。
今回はphpでDBにアクセスする場合の、基本コードを書いてみました。
PHPをもっと詳しく学ぶには、プログラミングスクールもお勧めです。
番外編:実際にアクセスし、接続成功と失敗を表示して見る
試しにURLにアクセスしてみます。インターネットエクスプローラーで「http://127.0.0.1/index.php」を入力します。
DB接続成功と想定通りのメッセージが表示されました。
ではユーザーを「root」を存在しない「roots」に変更して、再度アクセスしてみます。
DB接続失敗と想定通りのメッセージが表示されました。 成功しているようです。