・PHPからPDOでMariaDBへ接続する方法を知りたい。
・超シンプルにSELECT文の結果を表示する書き方を知りたい。
・具体的な手順を教えてほしい。
こういった疑問に答えます。
本記事の内容
この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
PHPからPDOでMariaDBへ接続する手順
前提条件
項目 | バージョン |
---|---|
CentOS | 8.3.2011 |
Apache | 2.4.37 |
PHP | 7.4.14 |
MariaDB | 10.3.27 |
その①:PHPからPDOオブジェクトを使ってMariaDBに接続
$pdo = new PDO ( 'mysql:host=localhost;dbname=●●●(DB名);charset=utf8mb4','▲▲▲(ユーザ名)','×××(パスワード)', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ] );
PDOのオプションについて
オプション | 値 | 意味 |
---|---|---|
ATTR_ERRMODE | ERRMODE_EXCEPTION | 例外をスローしてくれるので書いておくのが無難 |
ATTR_DEFAULT_FETCH_MODE | FETCH_ASSOC | カラム名をキーとする連想配列で取得 |
その②:SELECT文の実行、フェッチ
- レコード取得には
query()
メソッドを使う fetch()
メソッドを呼び出す度に、クエリから返される次の行を取得- 最後までフェッチして、それ以上は行が無いときは
fetch()
はfalse
になる - 複数レコードを処理するには
while()
ループを使うのが最適
$stmt = $pdo->query("SELECT カラム1, カラム2 from テーブル"); while ($row = $stmt->fetch()) { print "$row[カラム1], $row[カラム2] <br> \n"; }
その③:MariaDBからの切断
$pdo = null;
その④:エラー処理
PDOException
のgetMessage()
メソッドでエラーメッセージを取得できます。
try { ~~~~PDOオブジェクトを使った処理 } catch (PDOException $e) { echo $e->getMessage() . PHP_EOL; exit; }
PHPからPDOでMariaDBに接続するサンプルコード
<?php try { // MariaDB接続 $pdo = new PDO ( 'mysql:host=localhost;dbname=mysql;charset=utf8mb4','root','●●●●●●●(パスワード)', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ] ); $stmt = $pdo->query("SELECT Host, User from user"); while ($row = $stmt->fetch()) { print "$row[Host], $row[User] <br> \n"; } // MariaDB切断 $pdo = null; // エラー処理 } catch (PDOException $e) { echo $e->getMessage() . PHP_EOL; exit; }
上記サンプルコードをブラウザで表示した結果