![見出し画像](https://assets.st-note.com/production/uploads/images/83749820/rectangle_large_type_2_ab62188fa4754a8f56013cd0f93fb0e3.jpeg?width=1200)
【 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とデータベースを接続するために、
ユーザーを追加します。
作成したデータベースの[ 特権 ]をクリックします。
![](https://assets.st-note.com/img/1658472315757-mlPJzsJYHC.png)
下方の、ユーザーアカウントを追加する をクリック
![](https://assets.st-note.com/img/1658472858556-QjBfZxM8UD.png?width=1200)
↓ この画面になります。
![](https://assets.st-note.com/img/1658473034626-Dq48x2JBji.png?width=1200)
ユーザ名 php_user (自由です)
ホスト名 そのまま
パスワード password123 (自由です)
パスワード再入力 password123 (自由です)
データベース test_phpへの全ての特権を与える に チェック
下方の[実行]をクリック
![](https://assets.st-note.com/img/1658473235249-D277qG7IaY.png?width=1200)
ユーザの追加が完了しました!
【 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();
}
![](https://assets.st-note.com/img/1658541507808-Q30paNnquG.png)
▶︎ 解説 ①
//解説①
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 :: ○○○
という書き方は、クラスを使うときの、スコープ演算子という使い方です。
この書き方も、データベース接続の際に、型のようなものなので、
必ず書くと覚えておきましょう。
データベース編 次回へ続きます!