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 preparedmysql> 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)