目次
接続
構文
$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>';
