0
0

More than 1 year has passed since last update.

[WIP] PHP でデータベースに接続する PDO

Last updated at Posted at 2023-01-19

初学者の独り言メモです
PDO について DB への接続・切断、SQL を発行する部分を分けたり、例外処理、プレペアードステートメント、DAO などぼんやり理解したものの本や記事によって異なる関数が使われているのを多く見かけました。プレースホルダの書き方の違いや関数の記述の違い、関数をどう使い分けるのかを知ろうというのが目的です。書き起こしながら理解を深めようと随時加筆・修正していきます。ここで使用するデータベースは MySQL です。 JDBC ドライバ接続についても理解しないと。

データベースに接続するための抽象化レイヤーが PHP に用意されています。「PHP Data Objects(PDO)」が用意されています。今回「PDO クラス」を使います。
参考:PDO:PHP - Manual

抽象レイヤーとは何かは後回し

PDO クラス のインスタンスを生成してデータベースに接続しますが、データベース接続に必要な情報は以下です。

  1. データベースサーバーの名前(ホスト名)
  2. データベースの名前(スキーマ名)
  3. データベースのユーザー名
  4. データベースのパスワード
PDO 基本構文
$変数 = new PDO(
	DB設定(データベースの種類;ホスト名;文字コード),
	ユーザー名,
	パスワード
);

以下、$pdo オブジェクトを使ってデータベースとデータをやり取りします。

PDO Sample
<?php
    $dsn = "mysql:dbname=xxx;host=xxx;charset=xxx";
    $user = "root";
    $password = "xxx";

    $pdo = new PDO($dsn, $user, $password);

データベースへの接続
WordPress でのデータベース接続に似ているなぁ。データベースへの接続には決められたルールがあるんだね。データベースサーバーをホテルの一室と考えると、どのホテル(ホスト名)のどの部屋(スキーマ名)でなんて名前(ユーザー名)で予約して指定の鍵(パスワード)で入室できる感じかな。

データ取得関連の関数

他にもありますが、見かけた関数だけを抜き出しました。

  • prepare()  …SQLを準備する PDO::prepare
  • setAttribute() …属性を設定する PDO::setAttribute
  • query()   …SQLを実行する PDO::query
  • execute()  …SQLを実行する PDOStatement::execute
  • fetch()    …結果を取得する PDOStatement::fetchAll
  • fetchAll()   …結果をすべて取得する PDOStatement::fetch

今回はここまで

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0