両者の最も直接的な違いは次のとおりです。 # はデータに二重引用符を追加することに相当し、$ はデータを直接表示することに相当します。
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 サイトの他の関連記事を参照してください。