预处理

最近更新时间:2025-06-30 11:21:52

我的收藏
SQL 类型的支持:
PREPARE Syntax
EXECUTE Syntax
二进制协议的支持:
COM_STMT_PREPARE
COM_STMT_EXECUTE
预处理语句的作用:
防止 SQL 注入:由于使用了参数化查询,用户输入的数据被作为参数传递,而不是直接拼接到 SQL 语句中。这有效防止了恶意用户通过输入特殊字符来操控 SQL 语句结构,从而避免了 SQL 注入攻击。
提高性能:数据库可以缓存预处理语句的执行计划。当相同的预处理语句多次执行时,数据库无需重新解析和编译 SQL 语句,只需绑定新的参数即可,从而提高了查询性能。
示例:
mysql> select * from test1;
+---+------+
| a | b |
+---+------+
| 5 | 6 |
| 3 | 4 |
| 1 | 2 |
+---+------+
3 rows in set (0.03 sec)
mysql> prepare ff from "select * from test1 where a=?";
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> set @aa=3;
Query OK, 0 rows affected (0.00 sec)

mysql> execute ff using @aa;
+---+------+
| a | b |
+---+------+
| 3 | 4 |
+---+------+
1 row in set (0.06 sec)