スクリーンショット_2020-01-30_21

[PHP]PDOを使ったデータベースへの接続

概要

普段はlaravelを使用した開発が多いのですが、勉強会などにいくと「PHPを理解してからlaravelで開発した方がいい」とよく聞くので、最近PHP の勉強をやり直し始めました。データベースへの接続でつまづいたのでメモとして残しておきます。

開発環境

PHP 7.3/PostgreSQL 12.1

PDOとはなんだ

PDOを使えばデータベースに接続できる!けどPDOってなんだ??という感じなので、まずはPDOについて理解していきましょう!

PDO(PHP Data Objects) : データベースアクセスのためのクラス

PHPでは様々なデータベースに接続させるための命令が用意されていますが、PDOを利用すれば同じ命令で複数のデータベースに接続が可能になるので開発が容易になります。

PHP5.1以降で標準でバンドルされています。

接続のやり方

以下のようにPDOクラスのインスタンスを作成することにより、データベースサーバーとの接続が確立されます。

new PDO('pgsql:dbname=xxx host=localhost port=5432', 'ユーザ名' , 'インストール時に設定したパスワード’);

実際にデータベースに接続してみよう

dbconnect.php

<?php
try{
    $db = new PDO('pgsql:dbname=mydb host=localhost port=5432','postgres','');
    
}catch(PDOException $e){
    echo 'DB接続エラー:'.$e->getMessage();
}finally{
    $db = null;
}
?>

PDOクラスはデータベースに接続できなかった場合にPDOException例外を発生するので、getMessage()で例外メッセージを取得しています。この状態でブラウザ上でエラーメッセージが表示されていなければ接続完了!最後に$dbにnullをセットして接続を切断しています。しかしスクリプト終了時に自動的にデータベースへの接続は切断されるので必須ではありません。

あとはdbconnect.phpを各ファイルの先頭でrequireしてあげましょう!

ちなみにtry-catch-finallyとは。。

「例外処理」と言われる書き方。あらかじめ発生するかもしれないエラーを想定し、その場合にもスクリプト全体が停止しないように対処するための処理です。必ずエラーを出したい時に使います。

try{行いたい処理}catch(エラークラス エラーのインスタンスを入れる変数){tryの処理ができなかった場合の処理}finally{例外の有無に関わらず実行される処理}

なお、finallyはtry内でreturnが呼び出された時にも実行されます。

まとめ

今回は「よくわかるPHPの教科書」(たにぐちまこと著)を参考にさせていただきました!私のphp1冊目の本です!

作成したPDOオブジェクトでSQL文を実行する方法については別記事書こうと思います!ので、スキ・フォローしていただけると続き頑張ってかけます。

サポートしていただけるとこれからも続ける励みになります! 書籍購入などに使わせていただく予定です! 何卒よろしくお願いします^^