使用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 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
随机推荐
- CodeForces Round 193 Div2
I know,this is another failure.It seems like that failure is a habit with me.This time I solved two ...
- Gradle dsl method not found renderscriptSupportMode()
连接: How to use the Renderscript Support Library with Gradle Android-Studio and Renderscript support ...
- topcoder 594 DIV2 foxandclassroom
暴力枚举 1 #include <iostream> #include <vector> #include <string> using namespace std ...
- 【BZOJ】1192: [HNOI2006]鬼谷子的钱袋(水题)
http://www.lydsy.com/JudgeOnline/problem.php?id=1192 看到题我就好像想起以前小学升学考数学的最后一题,将一条金块分割最少的部分,使得每一天都能够支付 ...
- POJ 3373 Changing Digits(DP)
题目链接 记录路径的DP,看的别人的思路.自己写的也不好,时间居然2000+,中间的取余可以打个表,优化一下. 写的各种错,导致wa很多次,写了一下午,自己构造数据,终于发现了最后一个bug. dp[ ...
- Android之adb异常
Android使用adb模拟器时出现"unable to establish connection to adb"."ADB server didn't ACK" ...
- Android jni开发资料--NDK环境搭建
谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK.而在NDKr7开始,Google的Windows版的NDK ...
- QCheckBox 的按钮响应
Qt中QCheckBox的按键响应如下,其中checkbox为对象名: void YourClass::on_checkbox_toggled(bool state) { // Do somethin ...
- mysql主从配置脚本
PASSWD=123456USER=rootREP_HOST=10.10.10.70REP_PORT=3306REP_USER=slaveREP_PASSWD=123456@REP_FILE=mysq ...
- android之初识Intent
首先修改values\strings.xml文件 代码如下: <resources> <string name="app_name">mytab</s ...