ホームページ  >  記事  >  データベース  >  #と$の違い

#と$の違い

王林
王林オリジナル
2019-10-25 17:15:0722650ブラウズ

#と$の違い

両者の最も直接的な違いは次のとおりです。 # はデータに二重引用符を追加することに相当し、$ はデータを直接表示することに相当します。

1, #受信パラメータを文字列として扱います。つまり、プリコンパイルされます。

select * from user where name = #{name}

たとえば、csdn を渡すと、渡されるパラメータは

になります。
select * from user where name = 'csdn'

2 、$ は受信値

select * from user where name=${name}

をプリコンパイルしません。たとえば、csdn を使用している場合、渡される値は

select * from user where name=csdn

3 になります。 # の利点は次のとおりです。 SQL インジェクションを防ぐにはかなりの範囲で使用できますが、$ はそうではありません。

例: ユーザーがログイン操作を実行し、バックグラウンド SQL 検証スタイルが次のとおりである場合:

select * from user where username=#{name} and password = #{pwd}

フロント デスクから送信されたユーザー名が「wang」、パスワードが「1」の場合# メソッドを使用する場合、SQL インジェクションは行われません。$ メソッドに変更すると、SQL ステートメントは

select * from user where username=wang and password = 1 or 1=1

になります。この場合、SQL インジェクションは次のようになります。形成されました。

4. MyBatis をソートするときに動的パラメーターによる順序を使用する場合は、# の代わりに $ を使用することに注意する必要があります。

推奨チュートリアル: mysql チュートリアル

以上が#と$の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。