📢 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 {
    echo htmlspecialchars($records['name']);
    $pdo = new PDO(
    echo htmlspecialchars($records['address']);
      '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>