PHPでMySQLデータベースに接続
プリペアードステートメントとは
実行したいSQLをあらかじめ用意して、可変となるパラメーターは後から渡す仕組み
- プリペアードステートメントでパラメーターを可変にして名前で検索する場合
sample.php
<?php
// データベース接続情報
$username = 'xxxx_user';
$password = 'xxxx_pass';
$hostname = 'db';
$db = 'xxxx_db';
// データベース接続 PDOとはPHP Data Objectの略
$pdo = new PDO("mysql:host={$hostname};dbname={$db};charset=utf8", $username, $password);
//SQLとパラメーターの用意
$sql = "SELECT * FROM users WHERE name = :name";
$param = array(":name" => "山田")
// プリペアードステートメント
$stmt = $pdo->prepare($sql);
//SQL実行
//[SELECT * FROM users WHERE name = '山田']が実行される
$stmt->execute($param);
}
?>
- ユーザー情報を全部取ってくる場合
sample.php
<?php
// データベース接続情報
$username = 'xxxx_user';
$password = 'xxxx_pass';
$hostname = 'db';
$db = 'xxxx_db';
// データベース接続 PDOとはPHP Data Objectの略
$pdo = new PDO("mysql:host={$hostname};dbname={$db};charset=utf8", $username, $password);
// ユーザー情報取得のSQLの実行
$sql = "SELECT * FROM users ORDER BY id";
$stmt = $pdo->prepare($sql);
$stmt->execute();
//SQL実行結果を処理(fetch 取得)
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
// 何かしら処理
var_dump($row);
?>
PDO::FETCH_ASSOC とは
結果セットに 返された際のカラム名で添字を付けた配列を返します。
PDO::FETCH_ASSOC: Return next row as an array indexed by column name
Array
sample.php
(
[name] => apple
[colour] => red
)