#PDOのプレースホルダーは変数名で書くべき
結論から言うとプレースホルダーには入れ込む変数名を記述するようにしましょう。
?でも可能ですしexecuteの引数の記述も減らせますが可読性や保守性面を考えると変数名で記述すべきだと言えるでしょう。
$label = '素晴らしい!!';
$n = 80;
$stmt = $pdo->prepare(
"UPDATE
posts
SET
message = CONCAT(?, message)
WHERE
likes >= ?"
);
$stmt->execute([$label, $n]);
↓書き換えると
$stmt = $pdo->prepare(
"UPDATE
posts
SET
message = CONCAT(:label, message)
WHERE
likes > :n"
);
$stmt->execute([':label' => $label, ':n' => $n]);
またexecute()の 第1引数のコロン(:)は省略できるので↓
$stmt = $pdo->prepare(
"UPDATE
posts
SET
message = CONCAT(:label, message)
WHERE
likes > :n"
);
$stmt->execute(['label' => $label, 'n' => $n]);
こうなります。
以上。