見出し画像

【 PHP学習 #28 】 データベース編④  「PDO」 FIREへの旅路 ♯482


【 PDO 】

PHP Data Object の略。
PHP とデータベースサーバーの間の接続を表わす

PDOでは、クラスという機能が使われています。

PDOとは、つまりはクラス名です。


▶︎ クラス(class)

変数/定数、関数などの関連する機能をひとまとまりにしたもの

クラスに格納されると、
変数/定数は、プロパティ
関数は、メソッド

と呼ばれます。


<書き方>

クラスには、プロパティやメソッドの定義を記述します。

class クラス名
{
  //プロパティの宣言
  public $変数名 = 値;
 
  //メソッドの宣言
  public function メソッド名(){
    メソッド内処理...
  }
}



<使い方>

クラスを使用するために、クラスのオブジェクトを生成する必要があります。

$クラスオブジェクト = new クラス名();



<サンプルコード>

<?php
 
class SampleClass
{
  //プロパティの宣言
  public $var = 'サンプルです';
 
}
 
//インスタンスの生成
$sample = new SampleClass();
 
echo $sample->var;
 
?>

SampleClassというclassを作ります。

その中に、プロパティを作ります。
$var に 'サンプルです' という文字列が入っています。

このクラスを使うために、
$sample = new SampleClass(); インスタンス化します。

クラス内のプロパティを参照するには、->プロパティ名 と書きます。



【 データベースにユーザーを追加する 】

では、PDOを使って、PHPとデータベースを接続するために、
ユーザーを追加します。

作成したデータベースの[ 特権 ]をクリックします。

下方の、ユーザーアカウントを追加する をクリック

↓ この画面になります。

ユーザ名  php_user (自由です)
ホスト名     そのまま
パスワード password123 (自由です)
パスワード再入力 password123 (自由です)

データベース test_phpへの全ての特権を与える に チェック

下方の[実行]をクリック



ユーザの追加が完了しました!


【 PDOを書く 】

basic認証を行なったmainteフォルダに、新たにファイルを追加します。

db_connection.php というファイルを作ります。


db_connection.php

<?php

//解説①
const DB_HOST = 'mysql:dbname=test_php;host=localhost;charset=utf8';
const DB_USER = 'php_user';
const DB_PASSWORD = 'password123';


//解説②
$pdo = new PDO(DB_HOST,DB_USER,DB_PASSWORD);


//解説③ 例外処理 Exception
try{
    $pdo = new PDO(DB_HOST,DB_USER,DB_PASSWORD);
    echo '接続成功' ;
} catch(PDOException $e){
    echo '接続失敗' . $e -> getMessage() . "\n";
    exit();
}
実行結果


▶︎ 解説 ①

//解説①
const DB_HOST = 'mysql:dbname=test_php;host=localhost;charset=utf8';
const DB_USER = 'php_user';
const DB_PASSWORD = 'password123';

定数const を宣言します。
定数は大文字書きます。

DB_HOST では、データベースの名前、ホスト名、文字コードの情報を入れます。

DB_USER では、データベースのユーザー名を入れます。

DB_PASSWORD では、データベースのパスワードを入れます。

これらの情報を、引数として、PDOに渡します。


▶︎ 解説 ②

//解説②
$pdo = new PDO(DB_HOST,DB_USER,DB_PASSWORD);

PDOを$pdoに格納して、インスタンス化します。
PDOに先ほどの定数を、引数として渡すことで、データベースとの接続ができます。


▶︎ 解説 ③

//解説③ 例外処理 Exception
try{
    $pdo = new PDO(DB_HOST,DB_USER,DB_PASSWORD);
    echo '接続成功' ;
} catch(PDOException $e){
    echo '接続失敗' . $e -> getMessage() . "\n";
    exit();
}

データベースに接続が問題なくできているかを確認するための処理です。

■ try  catch  構文

try { 実行する処理 }  catch ( ) { エラーの場合の処理 }

この書き方は、決まった書き方と言っても良いです。



【 PDOオプション 】

PDOでは、オプションを追加できます。

//解説③ 例外処理 Exception
try{
    $pdo = new PDO(DB_HOST,DB_USER,DB_PASSWORD,[
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //連想配列で返す
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //例外を表示する 必須設定
        PDO::ATTR_EMULATE_PREPARES => false, //SQLインジェクション対策 必須設定
    ]);
    echo '接続成功' ;
} catch(PDOException $e){
    echo '接続失敗' . $e -> getMessage() . "\n";
    exit();
}


オプションは、[ ] で囲みます。 //ここからオプション の箇所です。

    $pdo = new PDO(DB_HOST,DB_USER,DB_PASSWORD,[ //ここからオプション
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //連想配列で返す
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //例外を表示する 必須設定
        PDO::ATTR_EMULATE_PREPARES => false, //SQLインジェクション対策 必須設定
    ]);

PDO :: ○○○ 
という書き方は、クラスを使うときの、スコープ演算子という使い方です。

この書き方も、データベース接続の際に、型のようなものなので、
必ず書くと覚えておきましょう。


データベース編 次回へ続きます!


この記事が気に入ったらサポートをしてみませんか?