データベースでSQL文を扱う場合基本的に次のようにプレースホルダを使うと思います。
SELECT * FROM users WHERE id = ?
実際の値を割り当てる場合は数字で指定して bind(0, 123)
のようにします。
これは名前付きプレースホルダでも書けます。
SELECT * FROM users WHERE id = :id
この場合は bind(':id', 123)
のようになります。
プレースホルダーが1つしかない場合はどちらでも大した違いはありませんが、プレースホルダーが増えてきたり、後から追加する場合疑問符のほうは連番を振り直す必要があったり、間違えて1つずれて登録されてしまう事が多いように思えます。
名前付きプレースホルダを使っておけば番号を振り直す必要もなく、見た目にもどれに値を割り当てているかわかりやすいと思います。SQL文が動的に変化する場合でも対応が簡単です。
にもかかわらず大抵の参考書ではまず疑問符プレースホルダーが紹介され、名前付きの方はおまけ程度か載っていないことすらあります。
なぜこれほどまでに疑問符プレースホルダーは一般的なのでしょうか?
名前付きにはないメリットや、名前付きを使うことによるデメリットなどがあれば教えてください。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。