そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

PHP7.4からPDOでMariaDBへ接続【超シンプルにSELECT文の結果を表示】

※[PR]当ブログの記事の中にはプロモーションが含まれています。

PHPからPDOでMariaDBへ接続する方法を知りたい。
・超シンプルにSELECT文の結果を表示する書き方を知りたい。
・具体的な手順を教えてほしい。

こういった疑問に答えます。

本記事の内容

サトナカ (@souiunogaii)

この記事を書いている私は、某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;

その④:エラー処理

PDOExceptiongetMessage()メソッドでエラーメッセージを取得できます。

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;

}

上記サンプルコードをブラウザで表示した結果

参考サイト

qiita.com

souiunogaii.hatenablog.com