以前PDOについてこんなツイートをしました。これだけだとなんとなく流れとPDOについてしかわからないと思うので記事にしました。もう少し詳しく説明していきます。
データベースと接続するきのう【PDO】について
— Tomoya@Web系フリーランサー (@div_tomo) August 25, 2023
PDOとは?めちゃめちゃ簡単に言うと
・データベースと接続するために、特化した機能
です。
1.PDOを使うためにインスタンス化(実体)
2.例外処理 Exception 「try-catch」
流れはこんな感じかな#PDO #PHP #プログラミング
PDOは、PHP Data Objects の略で、どのデータベースを利用する場合でも同じ関数を使うことができ、もし将来データベースを変更することがあっても、 PDO オブジェクトを作成する時に指定したパラメータだけを変更するば良いです。
クラスの考え方
--class--
変数/定数
関数
----------
クラス(class)というのは、簡単に言うと
変数や定数、関数などをひとまとめにした物と考えておくとOKです。
PDOの場合は、データベースと接続するために、特化した機能です。
変数や関数はclassの中に入ると呼び方が変わる
変数や定数はclassの中に入ると呼び方が変わり、プロパティという呼び方に変わります。
関数はclassの中に入ると、メソッドという呼び方に変わります。
ただ呼び方が変わっただけで意味的には一緒になるので心配しないでください。
クラスの使い方
基本的にclassはそのままでは使えなくて、**instance化(実体化)**という手順をする必要があります。
クラスを使うnew(動的)
newという構文を使うことで、クラスを使える状態にする事ができます。
$pdo = new class名;
$pdo->プロパティ
$pdo->メソッド
new class名
を一旦変数 $pdo
に入れて、プロパティ(変数)やメソッド(関数)を使っていくという形になります。
-> はアロー演算子と呼びます。
配列の場合は =>
だったのですが
クラスの場合は ->
のようになります。
クラスを使うsetatic(静的)
クラス名などに ::
を使ってプロパティ(変数)、メソッド(関数)を使っていく方法もあります。
PDO::ATTR_ERRMODE
PDO::ERRMODE_EXCEPTION
クラスの中の変数や関数に static という物を付けておくと実行することができます。
:: はスコープ演算子と呼びます。
手順
ファイルの作成
formフォルダ の中に db_connection.phpファイル を作成していきます。
form
|
|----> db_connection.php
インスタンス化
まずは、PDOを使うためにインスタンス化(実体)する必要があるのでまずはそちらを書いていきます。
form > db_connection.php
<?php
const DB_HOST = 'mysql:dbname=php_test;host=127.0.0.1;charset=utf8';
const DB_USER = 'php_user';
const DB_PASSWORD = 'SuTomSun0218';
$pdo = new PDO(DB_HOST, DB_USER, DB_PASSWORD);
説明
定数は const
で始まります。定数は一般的にすべて大文字で書いていきますので今回は DB_HOST
とします。
const DB_HOST = 'mysql:dbname=php_test;host=127.0.0.1;charset=utf8';
dbname=php_test; | = | データベースの名前 |
---|---|---|
host=127.0.0.1; | = | 接続先(今回はローカルなので127.0.0.1) |
charset=utf8 | = | 文字コード |
const DB_USER = 'php_test';
php_test | = | データベースにアクセスできるユーザー |
---|
const DB_PASSWORD = 'SuTomSun0218';
SuTomSun0218 | = | php_userのパスワード |
---|
ここで設定されている情報は以下の記事で作成した情報になります。
$pdo = new PDO(DB_HOST, DB_USER, DB_PASSWORD);
PDOを実際にインスタンス化(実体)するために、DB_HOST、DB_USER、DB_PASSWORD の情報を PDO(引数) の引数の中に入れてあげています。
基本的にはこれでデータベースの接続ができるのですが、データベースが接続できない場合、プログラムがそのまま進んでしまうとまずいので、まずはデータベースが繋がっているかどうかのチェックをかけていく必要があります。
この際に使われるのが例外処理という物です。
例外処理 Exception
例外処理をするには、トライキャッチ構文を使って書いていきます。
form > db_connection.php
const DB_HOST = 'mysql:dbname=php_test;host=127.0.0.1;charset=utf8';
const DB_USER = 'php_test';
const DB_PASSWORD = 'SuTomSun0218';
try
{
$pdo = new PDO(DB_HOST, DB_USER, DB_PASSWORD);
echo '接続に成功しました。';
}
catch(PDOException $e)
{
echo '接続に失敗しました。' . $e->getMessage() . "\n";
exit();
}
説明
try{} は正常の処理
catch(){} もしエラーがでた場合の処理
try
{
$pdo = new PDO(DB_HOST, DB_USER, DB_PASSWORD);
echo '接続に成功しました。';
}
先ほど作成したPDOのインスタンス化(実体)するコードを try{} の中に切り取って貼り付けます。
catch(PDOException $e)
{
echo '接続に失敗しました。' . $e->getMessage() . "\n";
exit();
}
これはお決まりの書き方なのですが
catch(PDOException $e)
PDOの場合は PDOException $e
と書きます。
echo '接続に失敗しました。' . $e->getMessage() . "\n";
表示させたい文字
$e->getMessage()
というメソッドがあります。
\n
で改行できます。
exit();
で処理を抜ける。
この書き方はデータベースと接続する時には、お決まりの書き方になります。
ローカルにアクセスして表示内容を確認してみましょう。
接続に成功していたら「接続に成功しました。」
接続に失敗したら「接続に失敗しました。(エラーメッセージ)」
のように表示されるはずです。
これでデータベースと接続できたことが確認できました。