常用PHP MySQL函式

2021-09-07 11:44:41 字數 4737 閱讀 9772

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 ''=''

這意味著任何使用者無需輸入合法的密碼即可登陸。

預防資料庫攻擊的正確做法:

<?php

function 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...