2

2006 年の有益なブログ投稿では、PDO でのネイティブのプリペアド ステートメントの使用に関する次の事実が述べられています。

  1. ネイティブのプリペアド ステートメントはクエリ キャッシュを利用できないため、パフォーマンスが低下します。
  2. ネイティブの準備済みステートメントは、「SHOW TABLES」などの特定の種類のクエリを実行できません。
  3. ネイティブの準備済みステートメントは、他の特定の "SHOW" クエリの列の長さを正しく伝達しないため、結果が文字化けします。

これは今日でもどのくらい真実ですか?

4

2 に答える 2

3

いいえ、最新の MySQL バージョンを使用している場合、これは当てはまりません。少なくとも大部分は。

  1. プリペアド ステートメントは、MySQL 5.1.17 以降、クエリ キャッシュを利用します。

  2. ほとんどすべての SQL ステートメントは、準備済みステートメントとして実行できます。MySQL docs でリストを見つけることができます。SHOW TABLES特にそのリストにはありませんが、正直なところ、PHP からその SQL ステートメントを使用したことがありますか?

  3. 私はそれについて何も知りませんが、修正されたと思います。

準備されたステートメントのエミュレーションはエンコーディング セーフではないため、(正確な条件によっては) SQL インジェクションを許可する可能性があることを忘れないでください。

于 2012-06-25T19:24:21.553 に答える
3
  1. ファレ。MySQL 5.1.17 以降、クエリ キャッシュは準備済みステートメントで動作します。
  2. SHOW TABLES を実行するステートメントを準備する必要があるのはなぜですか?
  3. そのソースを引用できますか?個人的には特に問題はありませんでした
于 2012-06-25T19:25:31.700 に答える