0

MySQL PREPARE/EXECUTE 句と PHP mysqli の準備/実行メソッドに違いがあるかどうか疑問に思っていましたか? 注射を防ぐのは良いですか、悪いですか?

私はいくつかのデータベース ストアド プロシージャを作成していて、そのうちの 1 つではテーブルと属性がコンパイル時に不明であるため、興味があります。データを静的に書き込むことはできますが、クエリは少し複雑で、多くの制御ロジックでプロシージャが肥大化するだけです。これについて考えさせられました.単純なステートメントが必要な場合は、動的SQLで短いプロシージャを作成するか、PHPで準備してバインドする方が良いかどうか疑問に思いました.

また、これが繰り返しである場合はお詫び申し上げます。もちろん、すでに回答されている SO の質問へのリンクを歓迎します。しかし、私は一般的にグーグルで調べましたが、これに対する特定の答えの方法で実際に多くを見つけることができませんでした.

4

2 に答える 2

3

PHP mysqli は、PHP における、MySQL の準備/実行機能に関するレイヤーです。

どちらも、ユーザーからのすべての情報がバインドされた変数に詰め込まれている限り、SQL インジェクションから保護されます。

いずれかの方法で処理されるプリペアド ステートメントは、より効率的な大量操作にも役立ちます。MySQL での効率の向上は、Oracle のような高価な DBMS に比べて控えめですが、それでも苦労する価値はあります。

アプリでテーブル名を「変数」として持つ必要がある場合は問題ありませんが、テーブル名をバインドされた変数として扱うことはできません。したがって、これらのテーブル名の作成につながるユーザー入力については、完全に偏執的である必要があります。

于 2012-06-19T12:39:40.643 に答える