沒人問update的$keyAndvalues[]=后面key用的 ` value用的‘嗎?
$keyAndvalues[]="`" . $key . "`" . "=" . "'" . $value . "'"); ?這里$value被 ' 包括而不是 ` ,這里的$value 不需要對特殊字符進行轉義嗎
$keyAndvalues[]="`" . $key . "`" . "=" . "'" . $value . "'"); ?這里$value被 ' 包括而不是 ` ,這里的$value 不需要對特殊字符進行轉義嗎
2017-02-27
舉報
2017-03-03
因為sql中只有庫名、表名、字段名可能會與sql關鍵字沖突,而?` 這個字符在上面這行代碼里就是把字段名括起來,從而避免沖突,至于 value 不需要轉義,是的,沒錯,value 的內容是值,sql在處理值時是不會和關鍵字沖突的。
2017-03-10
嗯嗯。澤成的補充是對的。這個教程好像有個全局過濾。記不太清楚了。
2022-03-24
好吧,是DOM0級我覺得老師講的很不錯。課程不是為你一個人做的,要考慮大多數同學的接受能力。
2017-03-03
回復 堅持MyDream:不客氣,順便補充說明一下,對于value來說,sql本身是沒啥問題的,但是PHP就有問題了,比如就拿教程里面的這種方式,把變量 $value 里的字符串直接拼接成為 sql 語句,就會存在很大的安全隱患,舉個例子,假設你開發一個密碼登錄的接口,$value1 里存的是用戶賬號,$value2 里存的是用戶密碼,sql語句是這樣子拼的:
$sql = "select * from user where `account` = '".$value1."' and `password` = '".$value2."'";
如果遇到惡意用戶,他在登錄時把密碼填成? 123456' or '1' = '1 ,想一下,你最后會得到什么樣的sql語句,是不是
select * from user where `account` = 'zhangsan' and `password` = '123456' or '1' = '1'
于是只要 '1' = '1' 成立,sql語句就能執行成功。。。
是不是很可怕?這就叫做 sql 注入,是一種很古老的黑客攻擊手段,所以現在一般會用 addslashes 對用戶提交的內容進行轉義,把那些可能會導致sql注入的關鍵字給替換掉。