bindValue を使う時は prepare → execute → fetch と手順を踏まなければならないのでしょうか?

その認識で良いです。
2022年1月3日
ユーザー

bindValue について、SELECT 文の時にも使えるかと思い、43 行目以降を以下のようにして試してみたのですが、エラーが出てしまいました。

  $stmt = $pdo->query("SELECT * FROM posts WHERE likes = :likes");
  $stmt->bindValue('likes', $likes, PDO::PARAM_INT);
  $posts = $stmt->fetchAll();
  foreach ($posts as $post) {
    printf(
     ' %s (%d)' . PHP_EOL, 
      $post['message'], 
      $post['likes']
    );
  }

INSERT 文の時に $likes=8 となっているので Merci(8) と出力されると思ったのですが、SELECT 文の時には使えないのでしょうか?

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?