MySQL 如何在MySQL中使用预处理语句?
MySQL服务器支持预处理语句,当我们想运行许多仅在非常细微的细节上有所不同的查询时,这很有用。我们可以准备一条语句,然后多次执行它,每次使用不同的数据值。从根本上讲,MySQL中的预处理语句利用了客户端/服务器二进制协议。预处理语句提供了增强的性能,因为服务器仅解析完整语句一次。
下列是在MySQL中使用预处理语句的步骤 –
阅读更多:MySQL 教程
准备语句
这是第一步,我们将使用PREPARE语句准备一条语句。例如,以下语句使用“Tender”表中的数据进行准备 –
示例
PREPARE stmt FROM ‘Select tender_value from Tender Where Companyname = ?;’
执行准备好的语句
这是第二步,我们将执行“准备好”的语句,该语句使用“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)