如何在MySQL中使用預處理語句?


MySQL伺服器支援預處理語句,當我們想要執行許多隻有細微差別(僅少量細節不同)的查詢時,預處理語句非常有用。我們可以準備一條語句,然後多次執行它,每次使用不同的資料值。基本上,MySQL中的預處理語句利用了客戶端/伺服器二進位制協議。預處理語句提供增強的效能,因為完整的語句只會被伺服器解析一次。

以下是使用MySQL中預處理語句的步驟:

準備語句

這是第一步,我們將使用`PREPARE`語句準備一條語句。例如,以下是使用“Tender”表中的資料準備的語句:

示例

PREPARE stmt FROM ‘Select tender_value from Tender Where Companyname = ?;’

執行預處理語句

這是第二步,我們將使用`EXECUTE`語句執行已使用`PREPARE`語句準備的語句。例如,我們將使用以下語法執行已準備好的語句`stmt`:

示例

EXECUTE stmt USING @variable_name;

這裡`@variable_name`將具有我們想要傳遞到`PREPARE`語句中的`?`位置的值。在執行預處理語句之前,我們需要使用`SET`語句設定`@variable_name`的值。

釋放預處理語句

這是最後一步,我們將使用`DEALLOCATE`語句釋放預處理語句。例如,我們將使用以下語法釋放預處理語句`stmt`:

示例

DEALLOCATE PREPARE stmt;

以下是我們可以用來執行預處理語句的查詢:

mysql> PREPARE stmt FROM 'SELECT tender_value from Tender WHERE
Companyname = ?';
Query OK, 0 rows affected (0.09 sec)
Statement prepared

mysql> SET @A = 'Singla Group.';
Query OK, 0 rows affected (0.00 sec)

mysql> EXECUTE stmt using @A;
+--------------+
| tender_value |
+--------------+
|   220.255997 |
+--------------+
1 row in set (0.07 sec)

mysql> DEALLOCATE PREPARE stmt;
Query OK, 0 rows affected (0.00 sec)

更新於:2020年6月20日

452 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.