Mysqli的预编译机制处理批量数据过程
mysqli增强,还有一部分是对事物处理机制和预编译机制的增加,其实这两者都是为安全和执行效率着想的,这里主要说一下mysqli的预编译机制。
所谓的预编译,并不是在php的内核进行编译,而是数据库管理系统进行预编译,由于用于批量数据,说白了就是把一部分固定的数据格式先在mysql上面进行一次编译,编译之后就不在对其进行再次编译,我们要做的就是,向编译的占位符(就是数据占位)添加数据,之后发送,这样的话,大大的减少了编译次数,提高了批处理的效率。
下面是一段简单的示例代码:
<?php $mysqli=new MySQLi("localhost","root","toor","test"); $sql="insert into account (id,blance) values (?,?)";//也可以多个问好,逗号隔开 $mysqli_stmt=$mysqli->prepare("$sql");//创造预编译对象 /**每一条数据发送都是独立执行的*/ $id=6; $blance=23; $mysqli_stmt->bind_param("id",$id,$blance);//添加 $b=$mysqli_stmt->execute();//发送 $id=7; $blance=33; $mysqli_stmt->bind_param("id",$id,$blance); $b=$mysqli_stmt->execute(); $id=8; $blance=99; $mysqli_stmt->bind_param("id",$id,$blance); $b=$mysqli_stmt->execute(); if($b){ die("执行成功"); }else{ die("执行失败".$mysqli_stmt->error); } $mysqli->close(); ?>下面是做的查询操作:
<?php $mysqli=new MySQLi("localhost","root","toor","test"); if(mysqli_connect_error()){ die(mysqli_connect_error()); } $sql="select id,blance from account where id>?"; $mysqli_stmt=$mysqli->prepare($sql); /*第一次查询*/ $id=3; $mysqli_stmt->bind_param("i",$id);//绑定数据 $mysqli_stmt->bind_result($id,$account);//绑定结果集 $mysqli_stmt->execute(); while($mysqli_stmt->fetch()){ echo "<br/>--$id-----$account"; } echo "<br/>---------------------------------"; /*第二次查询*/ $id=5; $mysqli_stmt->bind_param("i",$id);//绑定数据 //$mysqli_stmt->bind_result($id,$account);//绑定结果集 $mysqli_stmt->execute(); while($mysqli_stmt->fetch()){ echo "<br/>--$id-----$account"; } echo "<br/>---------------------------------"; /*第三次查询*/ $id=6; $mysqli_stmt->bind_param("i",$id);//绑定数据 //$mysqli_stmt->bind_result($id,$account);//绑定结果集这里已经绑定了 $mysqli_stmt->execute(); while($mysqli_stmt->fetch()){ echo "<br/>--$id-----$account"; } $mysqli_stmt->close(); $mysqli->close(); ?>
注:仅供参考和csdn转载。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。