由註冊使用者名稱不能使用單引號和雙引號引發的思考

2021-06-19 05:52:53 字數 778 閱讀 5798

機房收費系統敲完很久了,也很久沒有在csdn上寫部落格了。關於機房收費系統能寫的東西很多,同期的也寫了很多。在測試機房收費系統時如果使用者名稱裡含有單引號或者雙引號時,每次系統都會報錯或者崩潰。

究其原因是我們目前寫的查詢語句一般如下:

strsql="select * from student_info where username='" & trim(txtusername.text) & "'"

當出現單引號或雙引號在username中時上面那段**是錯誤的的,當然我們最簡單的解決方法是禁止使用者名稱中使用單引號和雙引號,如下:

private sub txtusername_keypress(keyascii as integer)

if keyascii = 39 or keyascii = 34 then

msgbox "使用者名稱格式輸入不正確!"

keyascii = 0 '使輸入無效

end if

end sub

當然這樣是解決了問題,但是還有沒有其他方法來解決這個問題了?如果有為什麼不用呢?目前我還沒有找到,在網上也沒有搜尋到相關的解決方法(可能是搜的地方和方法不正確吧)。

帶著這個問題我又發現我測試的幾個**的使用者名稱中也都不能使用單引號和雙引號,當然還有其他更多的特殊符號也被禁用了。一次偶然的聽到了關於「sql注入」這個詞,我想這會不會為了防止sql注入發生才改用禁用的呢?後來查了一下關於sql注入的概念覺得似乎關係不大(目前我的理解),這個可能的設想就這樣被我扼殺了。

希望讀者能給我答案!

PHP單引號和雙引號的使用

之前剛開始學 php 時,自以為有那麼一點 c c 基礎,對一些基礎內容就只是大略看了下,後來做專案時,才發現基礎是很重要的,有時候一些小小的問題也要花你好長的時間,原因就是基礎沒打好。最近打算把 php 重新看一遍,鞏固下基礎內容。單引號的作用就是包涵一段字串,解析字串時變數和轉義序列都不會被解析...

MySQL中單引號和雙引號的使用

單獨使用時,單引號和雙引號沒有區別 需要巢狀使用時,雙引號和單引號可以互相巢狀。使用的結果是把內部的內容當做整體乙個字串變數。select from da track where act 1002001021 and data time like 2018 04 01 和 select from d...

MySQL中單引號和雙引號的使用

單獨使用時,單引號和雙引號沒有區別 需要巢狀使用時,雙引號和單引號可以互相巢狀。使用的結果是把內部的內容當做整體乙個字串變數。select from da track where act 1002001021 and data time like 2018 04 01 和select from da...