Sql注入:就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令php
Eg:登錄表單傳回帳戶名與密碼,而後使用sql語句去查詢html
$pwd=&_POST[‘pwd’];mysql
$name=$_POST[‘name’];sql
$sql=」 select * from login where pwd= 」+$pwd+」 and name =」+$name+」 」;數據庫
正常這樣驗證沒有問題,可是遇到別人惡意sql注入時;例如別人提交的表單中pwd的值爲:‘ or 1=1 ’時;apache
Sql語句變爲:select * from login where pwd =。。。 and name = or 1=1 」;數組
這樣sql恆爲真,不須要正確的帳號與密碼就惡意登錄了安全
使用mysqli時可使用預處理語句(相似jdbc):服務器
1. mysqli鏈接是永久鏈接,而mysql是非永久鏈接。app
mysql鏈接:每當第二次使用的時候,都會從新打開一個新的進程。
mysqli鏈接:一直都只使用同一個進程。
好處:這樣就能夠很大程度的減輕服務器壓力。
2.mysql_connect與mysql_pconnect與mysqli_connect:
mysql_pconnect打開的鏈接不會關閉(即便調用mysql_close也不會關閉,由於對其無效),
相似於鏈接緩衝池,若是下次有來自於同一個機器的同一個用戶名
對同一個數據庫的鏈接,php會自動使用上次已經創建的鏈接,而不須要再從新創建一個。?
好處:是省去了每次與數據庫創建鏈接的開銷,
壞處:是須要浪費一些內存,佔用一些鏈接,
因此若是用戶訪問量大的時候會出現錯誤,要把mysql的max_connections參數改大一點,?或者使用mysql_connect()就解決問題。
connect與pconnect不會帶來功能的差別,?只有性能上的差異.
通常php有倆種運行模式,?一是做爲cgi運行,?二是做爲apache的模塊運行.?
做爲cgi的時候connect跟pconnect沒什麼不一樣,?由於每次cgi進行運行結束後都會被銷燬清理掉資源
鏈接與基本使用見data_run
多條語句查詢見demo1
返回索引數組關聯數組等見PHP.php
見kq代碼
pdo擴展page.class.php
PHP.page.class.php