使用mysqli_stmt類


在生成網頁時,許多PHP腳本通常都會執行除參數以外,其他部分完全相同的查詢語句,針對這種重復執行一個查詢,每次迭代使用不同的參數情況,MySQL從4.1版本開始提供了一種名為預處理語句(prepared statement)的機制。它可以將整個命令向MySQL服務器發送一次,以后只有參數發生變化,MySQL服務器只需對命令的結構做一次分析就夠了。這不僅大大減少了需要傳輸的數據量,還提高了命令的處理效率。可以用mysqli擴展模式中提供的mysqli_stmt類的對象,去定義和執行參數化的SQL命令,mysqli_result類中包含的全部成員屬性和成員方法如表13-6和表13-7所示。

表13-6  mysqli_stmt類中的成員方法(共12個)

成員方法名

描    述

bind_param()

該方法把預處理語句各有關參數綁定到一些

PHP變量上,注意參數的先后順序

bind_result()

預處理語句執行查詢之后,利用該方法將變量綁定到所獲取的字段

close()

一旦預處理語句使用結果之后,它所占用的資源可以通過該方法回收

data_seek()

在預處理語句中移動內部結果的指針

execute()

執行准備好的預處理語句

fetch()

獲取預處理語句結果的每條記錄,並將相應的字段賦給綁定結果

free_result()

回收由該對象指定的語句占用的內存

result_metadata()

從預處理中返回結果集原數據

prepare()

無論是綁定參數還是綁定結果,都需要使用

該方法准備要執行的預處理語句

send_long_data()

發送數據塊

reset()

重新設置預處理語句

store_result()

從預處理語句中獲取結果集


表13-7  mysqli_stmt類中的成員屬性(共6個)

成員屬性名

描    述

$affected_rows

返回該對象指定的最后一條語句所影響的記錄數。

注意,該方法只與插入、修改和刪除三種查詢句有關

$errno

返回該對象指定最近所執行語句的錯誤代碼

$error

返回該對象指定最近所執行語句的錯誤描述字符串

$param_count

返回給定的預處理語句中需要綁定的參數個數

$sqlstate

從先前的預處理語句中返回SQL狀態錯誤代碼

$num_rows

返回stmt對象指定的SELECT語句獲取的記錄數

 
 
$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name);

$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // do something with $row
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM