PDOの使い方

ずっと使ってたわりには全然理解してなかったんやなーと反省。

PDOでデータベースに接続

$dsn = "pgsql:host=localhost; dbname=test_db";
$username = "ユーザー名";
$password = "パスワード";
$pdo = new PDO($dsn, $username, $password);

普通にSELECTするとき

$sql = "SELECT * FROM data";
$query = $pdo->prepare($sql);
$query->execute();
$result = $query->fetchAll();

プレースホルダ使ってSELECTするとき

$sql = "SELECT * FROM data WHERE id = ?";
$query = $pdo->prepare($sql);
$query->execute(array($_POST['id']));
$result = $query->fetchAll();

queryとprepareのちがいは?

queryとprepareは似たような感じやけども、SQL文の基本部分が同じで値だけ異なるような場合にはprepareを使う。

$sql = "SELECT * FROM data";

だけならどっちでもいいけど、

$sql = "SELECT * FROM data WHERE id = ?";

のように、値が固定じゃない場合はprepareを使うのが基本。
1回だけ使用するようなSQL文の場合はqueryを使う。