關于Notice的問題,是因為那些變量沒有傳入,可以在用之前判斷一下是否存在。改成$pwd=isset($_POST['password'])?md5($_POST['password']):'';就沒事了
2017-09-04
4. 整個查詢不會被發(fā)送到服務器,只有參數(shù)才會被發(fā)送,這減少了網(wǎng)絡流量。
5. mysql 直接把參數(shù)保存在服務器的緩沖區(qū)內(nèi),不需要在內(nèi)存中到處copy 數(shù)據(jù)
6. 預處理語句對安全性也有好處,它不需要在應用程序中對值進行轉(zhuǎn)義和加引號,這更加方便,并且減少了遭SQL 注入攻擊的可能性。
5. mysql 直接把參數(shù)保存在服務器的緩沖區(qū)內(nèi),不需要在內(nèi)存中到處copy 數(shù)據(jù)
6. 預處理語句對安全性也有好處,它不需要在應用程序中對值進行轉(zhuǎn)義和加引號,這更加方便,并且減少了遭SQL 注入攻擊的可能性。
2017-07-27
預處理真的好處不只是為了防止sql注入
預處理語句會比多次執(zhí)行查詢效率高的多:
1. 服務器只需要解析一次查詢,這節(jié)約了解析和其他的開銷
2. 因為服務器緩存了一部分執(zhí)行計劃,所以它只需要執(zhí)行某些優(yōu)化步驟一次
3. 通過二進制發(fā)送參數(shù)比通過ASCII 碼要快的多。比如,通過二進制發(fā)送DATE 類型的參數(shù)只需要3 個字節(jié),但通過ASCII 碼發(fā)送要10 個字節(jié)。節(jié)約的效果對于BLOB 和TEXT 類型最為顯著,因為它們可以成塊的發(fā)送,而不是一個個的發(fā)送。二進制協(xié)議也幫助客戶端節(jié)約了內(nèi)存,同時減少了網(wǎng)絡開銷和數(shù)據(jù)從本身的類型轉(zhuǎn)換為非二進制協(xié)議的開銷。
預處理語句會比多次執(zhí)行查詢效率高的多:
1. 服務器只需要解析一次查詢,這節(jié)約了解析和其他的開銷
2. 因為服務器緩存了一部分執(zhí)行計劃,所以它只需要執(zhí)行某些優(yōu)化步驟一次
3. 通過二進制發(fā)送參數(shù)比通過ASCII 碼要快的多。比如,通過二進制發(fā)送DATE 類型的參數(shù)只需要3 個字節(jié),但通過ASCII 碼發(fā)送要10 個字節(jié)。節(jié)約的效果對于BLOB 和TEXT 類型最為顯著,因為它們可以成塊的發(fā)送,而不是一個個的發(fā)送。二進制協(xié)議也幫助客戶端節(jié)約了內(nèi)存,同時減少了網(wǎng)絡開銷和數(shù)據(jù)從本身的類型轉(zhuǎn)換為非二進制協(xié)議的開銷。
2017-07-27