a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > 文庫 > 正文

SQL WHERE IN參數化編譯寫法簡單示例

2020-10-29 21:45:44
字體:
來源:轉載
供稿:網友

前言

最近在一次使用sql中的where in語句時,造成了一些非預期的查詢結果。尤其是在代碼中去編寫并執行sql語句時,會出現一些意外情況。再查閱了一些資料以及手動測試后,發現是自己sql語句寫法存在問題,在此記錄。

例子

業務需求,需要通過SQL語句從asset資產表中查詢域名字段在(“thief.one”,”nmask.cn”,”sec.thief.one”)范圍內的數據庫記錄,SQL語句該怎么寫呢?

拼接法(錯誤)

values = "'thief.one','nmask.cn','sec.thief.one'"sql = "select * from asset where domain in ("+values+")"print sql

說明:通過將搜索條件以字符串拼接的方式構造sql語句,語法上可通過,但存在著安全隱患(參照sql注入漏洞)

參數化1(錯誤)

values = (("thief.one","nmask.cn","sec.thief.one"),)sql = "select * from asset where domain in %s"print sqlprint values

說明:通過參數化方式,將where in 后面的查詢內容傳入。表面上看沒問題,但在編譯過程中,會將(“thief.one”,”nmask.cn”,”sec.thief.one”)整體看成一個字符串,而作為查詢條件,與需求不符合。

參數化2(正確)

values = ("thief.one","nmask.cn","sec.thief.one")sql = "select * from asset where domain in ({})".format(",".join(['%s' for i in values]))print sqlprint values

說明:通過計算values里面字符串個數,動態構造編譯的參數。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片链接 | 亚洲国产成人av好男人在线观看 | 国产精品久久九九 | 激情久久av一区av二区av三区 | 欧美一区二区三区在线视频观看 | 国产不卡视频在线观看 | 国产精品毛片久久久久久久 | 亚洲精选久久久 | 99爱国产 | 国产欧美精品一区二区三区四区 | 少妇无套高潮一二三区 | 天天天天爽 | 国产中文字幕免费在线观看 | 午夜精品久久久久久久久 | 无码国模国产在线观看 | 中文字幕在线观看 | wwwxxx日本| 国产精品日产欧美久久久久 | 成人精品久久久 | 免费三级电影网站 | 国产日韩精品在线 | 日韩欧美在线播放 | 极品少妇一区二区三区精品视频 | 国产午夜久久 | 成人亚洲| 日韩高清中文字幕 | 亚洲乱码一区二区 | 国产一区二区三区久久久 | 男女av在线| av黄色在线| 欧美精三区欧美精三区 | 波多野结衣亚洲 | 亚洲视频三区 | a在线v| 午夜妇女aaaa区片 | 亚洲人成人一区二区在线观看 | 日韩精品免费一区二区三区 | 日韩av在线中文字幕 | 综合网激情五月 | 日本不卡一区二区 | www成人精品|