接続
構文
$pdo = new PDO('mysql:host=【DBサーバ名】;dbname=【DB名】;charset=【文字コード】', '【ログインユーザー名】', '【ログインパスワード】');
サンプル
// MySQL(MariaDB)サーバ=「localhsot」の、データベース=「shop」に、ID=「user01」、パスワード=「password」で接続する。 $pdo = new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'user01', 'password');
データの取得(SELECT文)
queryメソッド
公式ドキュメント
https://www.php.net/manual/ja/pdo.query.php
クラス
PDO::query
説明
引数のSQL文字列を実行して、実行結果をオブジェクト(PDOStatement)として受け取る
配列として受け取れるため、foreachループと合わせて使う事が多い
サンプル
$pdo = new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'user01', 'password'); // 実行するSQL文の文字列 $sql = 'SELECT * FROM product'; // SQLを実行して、受け取った結果(配列)をforeachループで表示 foreach ($pdo->query($sql) as $row) { echo $row['id'], ':'; echo $row['name'], ':'; echo $row['price']; }
execメソッド
公式ドキュメント
https://www.php.net/manual/ja/pdo.exec.php
クラス
PDO::exec
説明
単発でSQLを実行する時に使う
サンプル
$pdo = new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'user01', 'password'); // 実行するSQL文の文字列 $sql = 'DELETE FROM product WHERE id = 1'; // SQL実行 $pdo->exec($sql);
prepare + execute+fetchAllメソッド
公式ドキュメント
https://www.php.net/manual/ja/pdo.prepare.php
https://www.php.net/manual/ja/pdostatement.execute.php
https://www.php.net/manual/ja/pdostatement.fetchall.php
説明
prepareメソッドで準備したSQL文をexecuteメソッドで実行して、fetchAllメソッドで、実行結果を配列として受け取る
クラス
PDO::prepare
PDOStatement::execute
PDOStatement::fetchAll
サンプル
$pdo = new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'user01', 'password'); $sql = 'SELECT id, name, price FROM product WHERE id = ? AND price > ?'; $id = 1; $price = 800; // SQL文の準備 $exe_sql = $pdo->prepare($sql); // SQL文の?部分に当てはまるデータを設定して、SQLを実行する // ?の部分がないSQLであれば引数なしの$exe_sql->execute();だけを実行すれば良い $exe_sql->execute([$id, $price]); // SQLの実行結果(配列)をforeachループで表示 foreach ($exe_sql->fetchAll() as $row) { echo $row['id'], ':'; echo $row['name'], ':'; echo $row['price']; }
debugDumpParamsメソッド
公式ドキュメント
https://www.php.net/manual/ja/pdostatement.debugdumpparams.php
説明
executeメソッドで実行されたSQL文の出力が可能
クラス
PDOStatement::debugDumpParams
サンプル
$pdo = new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'user01', 'password'); $sql = 'SELECT id, name, price FROM product WHERE id = ? AND price > ?'; $id = 1; $price = 800; // SQL文の準備 $exe_sql = $pdo->prepare($sql); // SQL文の?部分に当てはまるデータを設定して、SQLを実行する // ?の部分がないSQLであれば引数なしの$exe_sql->execute();だけを実行すれば良い $exe_sql->execute([$id, $price]); // executeメソッドで実行されたSQL文の出力(<pre>タグで整形して表示) echo '<pre>', $exe_sql->debugDumpParams() , '</pre>';