📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の3版が非表示) | |||
| 27行目: | 27行目: | ||
<br> | <br> | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$record = $pdo->fetch(PDO::FETCH_ASSOC) | try { | ||
$pdo = new PDO( | |||
'mysql:host=<ホスト名またはIPアドレス>;dbname=<データベース名>;charset=utf8mb4', | |||
'<DBユーザ名>', | |||
'<DBユーザのパスワード>', | |||
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] | |||
); | |||
$stmt = $pdo->prepare('SELECT * FROM users'); | |||
$stmt->execute(); | |||
$record = $pdo->fetch(PDO::FETCH_ASSOC) | |||
} | |||
catch (PDOException $e) { | |||
die('接続エラー: ' . $e->getMessage()); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
繰り返し文を使用することにより、該当する複数のレコードを取得することができる。<br> | 繰り返し文を使用することにより、該当する複数のレコードを取得することができる。<br> | ||
<br> | |||
<u>※注意</u><br> | |||
<u>大量のレコードを処理する場合は、メモリ使用量を考慮して<code>fetch</code>メソッドを使用したループ処理が推奨される。</u><br> | |||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
while ($record = $pdo->fetch(PDO::FETCH_ASSOC)) { | try { | ||
$pdo = new PDO( | |||
'mysql:host=<ホスト名またはIPアドレス>;dbname=<データベース名>;charset=utf8mb4', | |||
'<DBユーザ名>', | |||
'<DBユーザのパスワード>', | |||
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] | |||
); | |||
$stmt = $pdo->prepare('SELECT * FROM users'); | |||
$stmt->execute(); | |||
while ($record = $pdo->fetch(PDO::FETCH_ASSOC)) { | |||
echo htmlspecialchars($record['name'], ENT_QUOTES, 'UTF-8'); | |||
echo htmlspecialchars($record['address'], ENT_QUOTES, 'UTF-8'); | |||
} | |||
} | } | ||
catch (PDOException $e) { | |||
die('接続エラー: ' . $e->getMessage()); | |||
} | |||
$stmt = null; | |||
$pdo = null; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 51行目: | 87行目: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
以下の例では、usersテーブルから指定値以上のageカラムのレコードを全件抽出している。<br> | |||
<syntaxhighlight lang="php"> | |||
$stmt = $pdo->prepare('SELECT * FROM users WHERE age > :age'); | |||
$stmt->execute([':age' => 20]); | |||
$results = $stmt->fetchAll(PDO::FETCH_ASSOC); | |||
foreach ($records as $record) { | |||
echo htmlspecialchars($record['name'], ENT_QUOTES, 'UTF-8'); | |||
echo htmlspecialchars($record['address'], ENT_QUOTES, 'UTF-8'); | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
プリペアードステートメントにおいて、以下に示すような記述がある。<br> | |||
<br> | |||
一般的には前者のシンタックス (コロンなし) が推奨される。<br> | |||
これは、コードの一貫性を保ちやすく、より簡潔だからである。<br> | |||
<br> | |||
<syntaxhighlight lang="php"> | |||
$stmt->execute(['age' => 20]); // OK | |||
$stmt->execute([':age' => 20]); // OK | |||
</syntaxhighlight> | |||
<br> | |||
また、PDOの内部でプレースホルダーの処理が適切に行われるため、キーにコロンをつける必要はない。<br> | |||
<br><br> | <br><br> | ||