台灣最大程式設計社群網站
線上人數
1786
 
會員總數:245900
討論主題:189495
歡迎您免費加入會員
討論區列表 >> VB.NET >> VB.NET+MySQL 查詢加' '
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VB.NET+MySQL 查詢加' '
價值 : 50 QP  點閱數:701 回應數:11
樓主

培根
門外漢
0 44
1149 136
發送站內信

各位高手們好!
我有一個小問題,以下是我的語法,這是正確的語法

但我試圖在後面加上'',列如
`製令單號` = '@製令單號' 或 "'" & 20180827 & "'" 但是會報錯,我不知道要如何加上去
不然我之前都沒有加,不然就是直接打在上面,`製令單號` = '"& 20180827 &"',但這樣不是會有黑客方面的問題嗎?,我忘記專業名詞了。
我有一本SQL的書,他也是打在上面。
希望有大大能幫我解答!

搜尋相關Tags的文章: [ VB.NET+MySQL 查詢加 ' ' ] ,
本篇文章發表於2018-08-27 17:04
1樓
回應

小魚
檢舉此回應
如果用參數基本上應該不用擔心 SQL Injection,
另外參數直接用 @參數 就好了, 前後不要加 '
字串用 "20180827" 就好了,
另外既然你之前的可以用了,
為什麼還要刻意改掉呢?
本篇文章回覆於2018-08-27 22:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

培根
檢舉此回應
謝謝您的回覆
我之前有看過一篇說 SQL 要少用+跟&來組成的字串
但我對 SQL Injection 的問題沒有說很熟。
找到一些網站http://cbb.sjtu.edu.cn/course/database/lab8.htm 他有講到沒加跟有加的安全性
雖然說原本的式子可以用,但是我想因該關西到安全的問題。
所以我想加上單引號,但是我又不能有用+跟&,所以還滿困擾的。
不知道小魚有沒有方法可解?
本篇文章回覆於2018-08-27 22:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

彩虹
檢舉此回應
依你的例子
「`製令單號` = '@製令單號'」 報錯原因應該是找不到「@製令單號」參數,因為你用單引號包起來,其實等同於字串
「`製令單號` = "'" & 20180827 & "'"」,你應該在第一個單引號出現時,後面整串變成註解~

「`製令單號` = '"& 20180827 &"'」等同「`製令單號` = '20180827'」

依你目前的例子,不會有 sql injection 問題
因為你是直接給值,並不是透過變數帶入值,如果你是透過 POST 或 GET...等,就不能這樣使用,一定會被攻擊

有時候在查詢時,不需要透過參數傳遞,而是一定會下固定條件的情況下,是可以直接把值打在裡面,
例如:
前台首頁最新消息內容,只能撈取「公開中」的文章,這時候可以這樣下,一半用參數、一半固定值

本篇文章回覆於2018-08-27 23:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

小魚
檢舉此回應
彩虹大大說到一個重點,
SQL Injection主要是針對使用者輸入的部分做防範,
如果是寫死的或是有限定選項給使用者選擇,
就算不用參數也沒關係,
只是我還是習慣會帶參數就是了,
就不用去思考到底是使用者輸入的還是不能輸入的.
本篇文章回覆於2018-08-28 00:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

培根
檢舉此回應
原來如此,那我知道了!
感謝兩位高手,分享知識。
本篇文章回覆於2018-08-28 07:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

培根
檢舉此回應
依照 彩虹 的例子下去使用,是可以的

但是如果變成 參數就沒辦法了

本篇文章回覆於2018-08-28 09:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

彩虹
檢舉此回應
「`製令單號` = '" & "@製令單號" & "' 」 當然一樣不行XD
你拆開後,意思一樣等同 「`製令單號` = '@製令單號' 」 ,一定會報錯呀∼
例如 「name="彩" & "虹"」 =「name="彩虹"」

用參數的情況下,是不能加 ' 單引號的∼,因為包在單引號裡面, 「@製令單號」 就不是參數了∼而是字串值
「'@製@令@單@號' 」這樣也都只是字串值,跟參數無任何關係了


你如果硬要拆開,就不能加單引號,但是真的蠻沒必要這樣的XDD

本篇文章回覆於2018-08-28 09:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

培根
檢舉此回應
原來如此。
我以為用參數還要自己加單引號。
我有時候常常會去看MySQL給出的指令,像刪除、新增等的...
它都有加單引號,所以我才會想加上去。
但我不知道用了參數後,會自己加單引號!
謝謝您!
本篇文章回覆於2018-08-28 09:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

彩虹
檢舉此回應
不是「用參數後,會自己加單引號」
而是用參數後,值會透過參數帶入,就不用擔心需不需要加單引號了
傳入的值可能是 string 或 int
本篇文章回覆於2018-08-28 09:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

培根
檢舉此回應
原來如此!,那我了解了!
我原本是怕SQL Injection,但現在知道不引響,所以也不會改程式碼了。
謝謝您!
本篇文章回覆於2018-08-28 17:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

小師妹
檢舉此回應
我是一個有點小脾氣的GTO 但是對於你我很認真 七號店一直都在 不斷的更新動態哦 很多的妹妹報班哦 北中南都有的說 只要你動動你的手指頭加一下我 賴:8w88你就可以享受到正妹悶騷服務哦!!!!
本篇文章回覆於2018-08-31 01:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.