使用mysqli_stmt类
在生成网页时,许多PHP脚本通常都会执行除参数以外,其他部分完全相同的查询语句,针对这种重复执行一个查询,每次迭代使用不同的参数情况,MySQL从4.1版本开始提供了一种名为预处理语句(prepared statement)的机制。它可以将整个命令向MySQL服务器发送一次,以后只有参数发生变化,MySQL服务器只需对命令的结构做一次分析就够了。这不仅大大减少了需要传输的数据量,还提高了命令的处理效率。可以用mysqli扩展模式中提供的mysqli_stmt类的对象,去定义和执行参数化的SQL命令,mysqli_result类中包含的全部成员属性和成员方法如表13-6和表13-7所示。
表13-6 mysqli_stmt类中的成员方法(共12个)
成员方法名 |
描 述 |
bind_param() |
该方法把预处理语句各有关参数绑定到一些 PHP变量上,注意参数的先后顺序 |
bind_result() |
预处理语句执行查询之后,利用该方法将变量绑定到所获取的字段 |
close() |
一旦预处理语句使用结果之后,它所占用的资源可以通过该方法回收 |
data_seek() |
在预处理语句中移动内部结果的指针 |
execute() |
执行准备好的预处理语句 |
fetch() |
获取预处理语句结果的每条记录,并将相应的字段赋给绑定结果 |
free_result() |
回收由该对象指定的语句占用的内存 |
result_metadata() |
从预处理中返回结果集原数据 |
prepare() |
无论是绑定参数还是绑定结果,都需要使用 该方法准备要执行的预处理语句 |
send_long_data() |
发送数据块 |
reset() |
重新设置预处理语句 |
store_result() |
从预处理语句中获取结果集 |
表13-7 mysqli_stmt类中的成员属性(共6个)
成员属性名 |
描 述 |
$affected_rows |
返回该对象指定的最后一条语句所影响的记录数。 注意,该方法只与插入、修改和删除三种查询句有关 |
$errno |
返回该对象指定最近所执行语句的错误代码 |
$error |
返回该对象指定最近所执行语句的错误描述字符串 |
$param_count |
返回给定的预处理语句中需要绑定的参数个数 |
$sqlstate |
从先前的预处理语句中返回SQL状态错误代码 |
$num_rows |
返回stmt对象指定的SELECT语句获取的记录数 |
$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name); $stmt->execute(); $result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with $row
}
使用mysqli_stmt类的更多相关文章
- PHP的扩展类 mysqli_stmt:预处理类
mysqli和mysqli_result能完成的功能 都可以使用mysqli_stmt类开完成 1.编译一次,使用多次,类似于存储过程 2.参数化查询,可防止sql注入 1: <?php 2: ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- PHP-Mysqli扩展库的预编译
(1)预编译的好处 假如要执行100条类似的sql语句,每一次执行,在MySQL端都会进行一次编译,效率很低.提高效率的方法就是--减少编译的次数. 先制造一个sql语句的模板,在MySQL端预先编译 ...
- MYSQL数据库的操作
Mysql的连接方式: 1.原生函数:mysql_connect($server,$username,$password); //打开一个到Mysql服务器的连接 mysql_select_db( ...
- mysqli预处理和事务处理
1 应用环境 mysqli预处理功能(大量数据处理时使用) 2 步骤 a)mysqli连接数据库 $mysqli = new mysqli('localhost','root','root','chu ...
- mysqli_stmt预处理类的使用
- mysqli_stmt预处理类
<?php $mysqli=new mysqli("localhost", "root", "123456", "xsph ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
随机推荐
- 【BZOJ】1927: [Sdoi2010]星际竞速(费用流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1927 题意:n个点的无向图.m条加权边.只能从编号小的到编号大的.可以瞬移,瞬移有时间.每个点只能访 ...
- Http中涉及到的知识点总结
1.URL地址 协议-> HTTP:超文本传输协议,除了用来传输文本,还可以传输HTML页面.CSS文件.JS文件.图片.音视频... HTTPS:SSL,它比HTTP更加安全一些 FTP:文件 ...
- asp.net 微信企业号办公系统-流程设计--流转条件设置(路由)
当一个步骤后面有多个步骤时,可以设置为根据设置条件系统自动判断该流向哪些步骤,也叫路由. 工作流没有单独的路由步骤来设置条件,流程条件通过双击连线弹出条件设置框来设置. 1.sql条件 即通过sql条 ...
- Nginx配置文件nginx.conf中文详解(总结)
PS:这篇是目前最完整的Nginx配置参数中文说明.更详细的模块参数请参考:http://wiki.nginx.org/Main #定义Nginx运行的用户和用户组 ...
- iOS移动开发周报-第21期
iOS移动开发周报-第21期 [摘要]:本期iOS移动开发周报带来如下内容:苹果iCloud中国数据转存中国电信,Swift Operators,100 个 Swift 必备 tips,FLEXLoa ...
- C++ Get Current Time 获取当前时间
在做项目中,我们经常需要获取系统的当前时间,那么如何获取呢,参见下面的代码: /* asctime example */ #include <stdio.h> /* printf */ # ...
- 发现未知字段 state ,过滤条件 [["state","not in",["draft"]]] 有误 的处理
通常该问题出现的原因在于对象定义的state字段在view中并没有出现,解决方案就是在view中添加该字段即可.
- [转载] #define new DEBUG_NEW
在用vc时,利用AppWizard会产生如下代码: #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] ...
- dig理解DNS的解析过程 - 阿权的书房
关于DNS的常识,可以阅读附录的一些参考资料.本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com. ...
- 获取Dell,Lenovo电脑的保修期
2015-4-6写的代码(Dell), 不知道如何对报错进行友好化处理,于是采用了"非空"和"非空的补集"处理方式. $service = New-WebSer ...