P粉6198961452023-09-03 10:06:17
まず、 の代わりに 名前付きパラメータ <代码> を使用することを検討してください? 代码>。この場合、何も置き換える必要はありません。名前付きパラメータは明確で、ログに表示するのが非常に簡単で、デバッグ目的でほとんどの dbms クライアントでサポートされています。
名前付きパラメーターが (現在のコードベースのサイズまたはその他の理由により) 使用できない場合は、主に 2 つの方法があります。
後者のアプローチを選択した場合、これを迅速かつ汚いやり方で行う方法の例を次に示します。
複数の手順で置換:
をパラメータまたはクエリに現れる可能性が非常に低い別の文字に置き換えて、パラメータを準備します。例えば###\?###。
正規表現を使用してパラメータを置換します。これは
? に置き換えると
(?
結果内のすべての \?
に置き換えます。
使用しないでください。この置き換えにより、次のいずれかまたはすべてが実装される可能性があります: SQL インジェクション,
最初のクエリにパラメータとして (コメントなどで)) が含まれている場合、結果は不正確になります。
リーリー
リーリー
"`' で囲まれたブロックの外側の ?
を置き換えるだけです。
デモは
ここ でご覧いただけます。