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