mysql 函式的行為受到 php.ini 中設定的影響。
在 mysql 模組中使用了兩種資源型別。第一種是資料庫的連線控制代碼,第二種是 sql 查詢返回的結果集。
返回前一次 mysql 操作所影響的記錄行數,如果最近一次查詢失敗的話,函式返回 -1。
返回當前連線的字符集名稱(character_set 變數的值)
關閉非持久的 mysql 連線。成功返回 true,失敗返回 false。
通常不需要使用 mysql_close(),因為已開啟的非持久連線會在指令碼執行完畢後自動關閉。
注:mysql_close() 不會關閉由 mysql_pconnect() 建立的持久連線。
開啟非持久的 mysql 連線。成功返回乙個 mysql 連線標識,失敗返回 false。
mysql_connect(server,user,pwd,newlink,clientflag)其中:
開啟乙個到 mysql 伺服器的持久連線。出錯返回 false。
mysql_pconnect() 和 mysql_connect() 非常相似,但有兩個主要區別:
選擇 mysql 資料庫。如果成功,則該函式返回 true。如果失敗,則返回 false。
返回 mysql 伺服器的當前系統狀態。如果成功,則該函式返回狀態。如果失敗,則返回 false。要得到其它狀態變數的完整列表,可使用 sql 命令 show status。
ping 乙個伺服器連線,如果沒有連線則重新連線。如果存在連線,則返回 true。如果失敗,則返回 false。
本函式可用於空閒很久的指令碼來檢查伺服器是否關閉了連線。
執行一條 mysql 查詢。
mysql_query() 僅對 select,show,explain 或 describe 語句返回乙個資源識別符號,如果查詢執行不正確則返回 false。對於其它型別的 sql 語句,mysql_query() 在執行成功時返回 true,出錯時返回 false。
函式自動對記錄集進行讀取和快取。如需執行非快取查詢,請使用 mysql_unbuffered_query()。
轉義 sql 語句中字串中的特殊字元。如果成功,則該函式返回被轉義的字串。如果失敗,則返回 false。可使用本函式來預防資料庫攻擊。
<?php
$con=mysql_connect
("localhost"
,"hello"
,"321"
);
if(!$con
)// 獲得使用者名稱和密碼的**
// 轉義使用者名稱和密碼,以便在 sql 中使用
$user=mysql_real_escape_string
($user
);
$pwd=mysql_real_escape_string
($pwd);
$sql
="select * from users where user='"
.$user
. "' and password='"
.$pwd
. "'"
// 更多**
mysql_close
($con
);
資料庫攻擊。本例演示如果我們不對使用者名稱和密碼應用 mysql_real_escape_string() 函式會發生什麼:
<?php$con
=mysql_connect
("localhost"
,"hello"
,"321"
);
if(!$con
)$sql
="select * from users where user='' and password=''"
;mysql_query
($sql);
// 不檢查使用者名稱和密碼
// 可以是使用者輸入的任何內容,比如:$_post
['user']=
'john'
; $_post
['pwd']=
"' or ''='"
;// 一些**...
mysql_close
($con);
?>
那麼 sql 查詢會成為這樣:
select * from users where user='john' and password='' or ''=''
這意味著任何使用者無需輸入合法的密碼即可登陸。
預防資料庫攻擊的正確做法:
<?phpfunction check_input(
$value
)
// 如果不是數字則加引號
if(!is_numeric
($value))
return$value
;
}$con
=mysql_connect
("localhost"
,"hello"
,"321");
if(!$con
)// 進行安全的 sql
$user= check_input(
$_post
['user'])
;
$pwd= check_input(
$_post
['pwd'])
;
$sql="select * from users where user=$user and password=$pwd"
;mysql_query
($sql);
mysql_close
($con);
?>
根據行號和字段返回結果集中乙個欄位的值。如果成功,則該函式返回字段值。如果失敗,則返回 false。
移動內部結果的指標。成功返回 true,失敗返回 false。
mysql_data_seek(data,row)
mysql_data_seek() 將 data 引數指定的 mysql 結果內部的行指標移動到指定的行號。
接著呼叫 mysql_fetch_row() 將返回那一行。
row 從 0 開始。row 的取值範圍應該從 0 到 mysql_num_rows - 1。
但是如果結果集為空(mysql_num_rows() == 0),要將指標移動到 0 會失敗並發出 e_warning 級的錯誤,mysql_data_seek() 將返回 false。
注:mysql_data_seek() 只能和 mysql_query() 一起使用,而不能用於 mysql_unbuffered_query()。
返回上乙個 mysql 函式的錯誤號碼,如果沒有出錯則返回 0。
返回上乙個 mysql 函式的錯誤文字,如果沒有出錯則返回 (空字串)。
從結果集中取得一行作為關聯陣列,或數字陣列,或二者兼有。如果沒有更多行則返回 false。
mysql_fetch_array(data,array_type)其中:
mysql_fetch_array() 是 mysql_fetch_row() 的擴充套件版本。除了將資料以數字索引方式儲存在陣列中之外,還可以將資料作為關聯索引儲存,用欄位名作為鍵名。注:返回的欄位名是區分大小寫的。
從結果集中取得一行作為關聯陣列。如果沒有更多行,則返回 false。注:本函式返回的欄位名是區分大小寫的。
mysql_fetch_assoc() 和用 mysql_fetch_array() 加上第二個可選引數 mysql_assoc 完全相同。
從結果集中取得一行作為物件。
若成功的話,本函式從 mysql_query() 獲得一行,並返回乙個物件。如果失敗或沒有更多的行,則返回 false。
每個隨後對 mysql_fetch_object() 的呼叫都會返回記錄集中的下一行。
注:mysql_fetch_object() 與 mysql_fetch_array() 類似,只有一點區別 - 返回的是物件而不是陣列。也意味著只能通過欄位名來訪問陣列,而不是偏移量。
從結果集中取得一行作為數字陣列。依次呼叫 mysql_fetch_row() 將返回結果集中的下一行,如果沒有更多行則返回 false。
取得結果中指定欄位的欄位名。如果成功,則返回欄位的名稱,如果失敗,則返回 false。注:返回的欄位名是區分大小寫的。
釋放結果記憶體。如果成功返回 true,如果失敗,則返回 false。
注:mysql_free_result() 僅需要在返回很大的結果集時會占用很多記憶體時呼叫。在指令碼結束後所有關聯的記憶體都會被自動釋放。
返回上一步 insert 操作產生的 id。如果上一查詢沒有產生 auto_increment 的 id,則 mysql_insert_id() 返回 0。
返回結果集中欄位的數目。如果失敗,則返回 false。
返回結果集的行數。此命令僅對 select 語句有效。要取得被 insert,update 或者 delete 查詢所影響到的行的數目,用 mysql_affected_rows()。
從結果集中取得列資訊並作為物件返回。從查詢結果中取得欄位的資訊。如果沒有指定字段偏移量,則提取下乙個尚未被 mysql_fetch_field() 取得的字段。
php mysql常用函式
應用mysql connect 函式連線mysql伺服器 2 應用mysql select db 函式選擇資料檔案 3 應用mysql query 函式執行mysql語句 4 應用mysql fetch array 函式從陣列結果集中獲取資訊 5 應用mysql fetch object 函式從結果...
php mysql常用函式
應用mysql connect 函式連線mysql伺服器 2 應用mysql select db 函式選擇資料檔案 3 應用mysql query 函式執行mysql語句 4 應用mysql fetch array 函式從陣列結果集中獲取資訊 5 應用mysql fetch object 函式從結果...
php mysql常用函式
mysqli connect 函式 mysqli connect 函式開啟乙個到 mysql 伺服器的新的連線。語法 mysqli connect host,username,password,dbname,port,socket username 可選。規定 mysql 使用者名稱。passwor...