在sql中對於傳入參數有兩種寫法,剛開始學的時候總是不知道是什么原因,故此寫下此筆記作為解釋:
$將傳入的數據直接顯示生成在sql中,那么我們使用 ${}的時候
select * from user where name = ${name};
${}在動態解析的時候,會將我們傳入的參數當做String字符串填充到我們的語句中,就會變成下面的語句
select * from user where name = "dato";
預編譯之前的 SQL 語句已經不包含變量了,完全已經是常量數據了。相當於我們普通沒有變量的sql了。 #{} 在動態解析的時候,會解析成一個參數標記符。
就是解析之后的語句是:
select * from user where name = #{name}; select * from user where name = ?;
1. #將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #user_id#,如果傳入的值是111,那么解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".
2. $將傳入的數據直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是111,那么解析成sql時的值為order by user_id, 如果傳入的值是id,則解析成的sql為order by id.
3. #方式能夠很大程度防止sql注入。
4.$方式無法防止Sql注入。
5.$方式一般用於傳入數據庫對象,例如傳入表名.
6.一般能用#的就別用$.
--------------------- 本文來自 水墨之白 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/ljjzj/article/details/78534162?utm_source=copy