上一篇《基于MYSQL的网络游戏多线程数据库服务器设计与实现》 中说到,用 mysql 提供的API 操作数据库时,我们选用预处理方式即mysql_stmt_* 系列函数。为什么选用预处理语句,而不直接用mysql_query 进行查询呢? 下面说下预处理语句的优缺点:
Mysql4.1 及更高版本支持服务器端的准备语句(prepared statements) ,它使用增强的二进制客户端/ 服务器协议在客户端和服务器端之间高校的发送数据。
创建预处理语句时,客户端会向服务器发送一个实际查询的原型,然后服务器对该原型进行解析和处理,将部分优化过的原型保存起来,并且给客户端返回一个状态句柄。客户端可以通过定义状态句柄重复的执行查询。