MYSQL 預處理語句


一、預處理語句介紹

MySQL支持服務端預處理語句,預處理語句利用高效的客戶端/服務端二進制協議。用占位符替換參數值的預處理語句有下列兩個好處:

  • 每次執行語句時,解析語句的開銷更小。通常,數據庫應用程序會處理大量相似的語句,只在子句中更改文字或變量值,比如查詢和刪除的WHERE子句,更新的UPDATE子句,插入的VALUES子句。
  • 防止SQL注入攻擊。參數值可以包含非轉義的SQL引用以及分隔符號。

你可以通過客戶端編程接口使用服務端的預處理語句,比如C編程時使用MySQL C API 客戶端庫或者MySQL Connector/C。

二、C API中預處理語句執行順序

為了准備和執行一個語句,應用程序遵循下列步驟:

1.用mysql_stmt_init()函數創建一個預處理語句句柄。為了在服務端准備語句,需要調用mysql_stmt_prepare()並且傳遞一個包含SQL語句的字符串給它。

2.如果語句會產生一個結果集(a result set),那么調用mysql_stmt_result_metadata()獲取結果集的元數據(metadata)。元數據結果集指示結果中有多少列以及包含每一列的相關信息。

3.用mysql_stmt_bind_param()設置每一個參數的值。所有的參數都必須賦值,否則語句執行會返回錯誤或者產生意想不到的結果。

4.調用mysql_stmt_execute()執行一個語句。

5.如果語句產生一個結果集,調用mysql_stmt_bind_result()綁定數據緩存用來接收每一行的值。

6.重復調用mysql_stmt_fetch()獲取每一行的數據存儲到綁定的緩存。

7.需要的話重復步驟3到步驟6,通過改變參數值並重新執行語句。

 


免責聲明!

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



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