mysqli扩展库的预处理机制
2013-09-19 17:17
260 查看
数据库执行sql之前首先需要编译sql语句,之后通过DBMS执行编译后的语句。我们知道编译sql是需要时间的,如果同一时刻要执行多条sql语句,那么编译就需要很长时间,而这种时间的开销会造成程序性能的下降如并发,这个问题如果用mysql扩展库是没办法解决的但是mysqli可以,这或许就是mysqli扩展库比较优秀的地方。mysqli扩展库的这种处理类似jdbc的preparedstatement.下面就按我的方式来分享下这块知识。
1.编译sql语句,mysqli扩展库可以使用prepare()来预编译sql,该方法需要传入我们的sql,代码如下
2.绑定参数,当然了没有参数就不用绑定了,代码如下
3.执行sql语句
4.绑定结果集并抓取数据,bind_result用来绑定结果集,该方法的第一个参数需要指定数据类型,s表示字符串,i表示int类型,之后就是要绑定参数名称,名称建议和数据库列名一致,fetch用来获取绑定的结果集
5.释放结果集(查询的时候才需要)并关闭预编译的sql以及数据库连接
需要注意的是如果是插入、修改、删除操作 $pstmt->execute()返会的是布尔类型,成功是true失败是false
代码看起来有点散,下面我把全部代码贴出来
很简单吧
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
。
1.编译sql语句,mysqli扩展库可以使用prepare()来预编译sql,该方法需要传入我们的sql,代码如下
$pstmt=$mysqli->prepare($sql);
2.绑定参数,当然了没有参数就不用绑定了,代码如下
$id=3; //绑定参数 $pstmt->bind_param("i",$id);
3.执行sql语句
$pstmt->execute();
4.绑定结果集并抓取数据,bind_result用来绑定结果集,该方法的第一个参数需要指定数据类型,s表示字符串,i表示int类型,之后就是要绑定参数名称,名称建议和数据库列名一致,fetch用来获取绑定的结果集
//绑定参数 $pstmt->bind_param("i",$id); $pstmt->execute(); $pstmt->bind_result($stuName,$stuId); while($pstmt->fetch()){ echo "---$stuName--$stuId"."<br>"; }
5.释放结果集(查询的时候才需要)并关闭预编译的sql以及数据库连接
$pstmt->free_result(); $pstmt->close(); $mysqli->close();
需要注意的是如果是插入、修改、删除操作 $pstmt->execute()返会的是布尔类型,成功是true失败是false
代码看起来有点散,下面我把全部代码贴出来
<?php
$mysqli=new mysqli("localhost", "root", "123456","student");
if($mysqli->connect_error){
die("数据库连接失败:".$mysqli->connect_error);
}
$sql="select stuName,stuId from m_student where id=?";
$pstmt=$mysqli->prepare($sql);
$id=3;
//绑定参数 $pstmt->bind_param("i",$id); $pstmt->execute(); $pstmt->bind_result($stuName,$stuId); while($pstmt->fetch()){ echo "---$stuName--$stuId"."<br>"; }
$pstmt->free_result(); $pstmt->close(); $mysqli->close();
?>
很简单吧
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
。
相关文章推荐
- 运用MySQLI扩展库的预处理功能...
- php mysqli扩展库之预处理操作
- Mysqli 扩展库增强-----预处理技术 mysqli stmt
- mysqli扩展库的 预处理技术 mysqli stmt
- php mysqli扩展之预处理
- mysqli扩展库增强-预处理mysqli_stmt批量输入
- mysqli扩展库的 预处理技术 mysqli stmt
- mysqli扩展库增强-预处理mysqli_stmt 批量查询显示结果
- PHP的扩展类 mysqli_stmt:预处理类
- linux下php的mysqli扩展安装
- 安装mysqli扩展 linux
- 驱动学习----函数调用机制(1)之同步(4)扩展
- php增加mysqli扩展
- Dubbo源码分析----扩展机制
- iOS runtime 机制 通过别扩展category给一个类添加属性
- php基础系列----11php通过mysqli扩展操作mysql数据库
- 详细介绍 mysqli扩展类(一)
- 扩展运行机制