• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysqli扩充库的预处理机制

mysql 搞代码 7年前 (2018-06-06) 176次浏览 已收录 0个评论

mysqli扩展库的预处理机制

数据库执行sql之前首先需要编译sql语句,之后通过DBMS执行编译后的语句。我们知道编译sql是需要时间的,如果同一时刻要执行多条sql语句,那么编译就需要很长时间,而这种时间的开销会造成程序性能的下降如并发,这个问题如果用mysql扩展库是没办法解决的但是mysqli可以,这或许就是mysqli扩展库比较优秀的地方。mysqli扩展库的这种处理类似jdbc的preparedstatement.下面就按我的方式来分享下这块知识。

1.编译sql语句,mysqli扩展库可以使用prepare()来预编译sql,该方法需要传入我们的sql,代码如下

$pstmt=$mysqli->prepare($sql);

欢迎大家阅读《mysqli扩充库的预处理机制》,跪求各位点评,by 搞代码

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(); ?> 

很简单吧mysqli扩充库的预处理机制


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysqli扩充库的预处理机制

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址