mysqli预处理和事务处理
|
1 |
应用环境 |
|
|
mysqli预处理功能(大量数据处理时使用) |
||
|
2 |
步骤 |
|
|
a)mysqli连接数据库 |
$mysqli = new mysqli('localhost','root','root','chuanzhi'); |
|
|
b)设置编码 |
$mysqli->set_charset('gb2312'); |
|
|
c)发送query语句 |
使用$mysqli->prepare($query)这个方法表示是预处理,如果涉及到取值,必须指定查询字段 $query = "select id,proName,proClass,proPrice from product where id>?"; $stmt = $mysqli->prepare($query); |
|
|
d)提供条件 |
比如上句用了?作为不确定的值,就需要指定 $stmt->bind_param('i', $id); 用变量绑定?表示的值,i表示整型,d表示浮点型,b代表二进制,s代表其它的所有 $id='1'; 指定变量的值 $stmt->execute(); 发送变量,此时服务器的语句已经完整了 |
|
|
e)从sql服务器中取回结果 |
预处理语句会将结果集保存在sql开辟的内存中,php开辟的内存无法直接使用(count是php函数,不是sql函数,无法直接与sql内存交互),默认情况是每次执行fetch()会从sql内存中取出一行,但是不使用store_result()就无法获取行数.当然如果你的结果只有一行,可以无视这一句.请记住:在mysqli预处理中取出数据,只能使用fetch()这是因为mysqli_stmt类并没有其它取值方法 $stmt->store_result();//如果用变量接收的话,会发现成功了显示1,否则显示0 |
|
|
f)获取结果集行数 |
$count = $stmt->num_rows(); |
|
|
g)绑定结果集需要输出的字段 |
$stmt->bind_result($id,$proName,$proClass,$proPrice); 名字无所谓,反正按顺序对应query的字段,变量个数要和query字段个数一致 |
|
|
h)输出结果 |
前面说了,既然要取值,当然前面query指定了查询字段,上句的变量用上了 |
|
|
i) |
你懂的,关闭mysqli链接 |
事务处理
|
1 |
应用环境 |
|
|
对于安全比较在意的时候使用 |
||
|
2 |
步骤 |
|
|
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的! |
||
|
a)连接数据库和设置编码 |
不用说,当然是连接数据库和设置编码了,mysql和mysqli都支持事务处理 |
|
|
b)关闭自动提交 |
$mysqli->autocommit(false);在sql的客户端里面用set autocommit = 0; |
|
|
c)开启事务 |
开启一个事务start transation(mysql中才有这一句,mysqli不需要这一句); |
|
|
d)执行sql语句 |
||
|
e)判断执行结果是否是自己想要的 |
如果是,就提交$mysqli->commit(); 否则,回滚$mysqli->rollback(); |
|
|
f)开启自动提交 |
$mysqli->autocommit(true); //个人认为这句并不是必须的,因为页面执行完,会回到初始状态,也就是自动提交状态 |
|
|
g)关闭数据库连接 |
$mysqli->close(); |
|
mysqli预处理和事务处理的更多相关文章
- php+mysqli预处理技术实现添加、修改及删除多条数据的方法
本文实例讲述了php+mysqli预处理技术实现添加.修改及删除多条数据的方法.分享给大家供大家参考.具体分析如下: 首先来说说为什么要有预处理(预编译)技术?举个例子:假设要向数据库添加100个用户 ...
- PHP 对MySQLI预处理的包装
mysql 类 <?php class Mysql { private static $instance; private $link; private $query; private $stm ...
- mysqli 预处理语句
预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高. <?php // 设置编码格式 header('content-type:text/html;charset=utf-8'); / ...
- php mysqli 预处理操作数据库
用到的SQL表 CREATE TABLE `student_01` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARAC ...
- php mysqli扩展之预处理
在前一篇 mysqli基础知识中谈到mysqli的安装及基础操作(主要是单条sql语句的查询操作),今天介绍的是mysqli中很重要的一个部分:预处理. 在mysqli操作中常常涉及到它的三个主要类: ...
- PHP(Mysqli和PDO)预处理
PHP预处理主要是用来防SQL注入的,开发程序的都明白这样一个道理,不能相信用户的任何输入,如果用户输入问题你没有做相应的安全, 那么:你的程序是很危险的,很容易被攻击的!预处理:只分析两个:mysq ...
- mysqli 操作数据库(转)
从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/ ...
- mysqli 操作数据库
从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/ ...
- PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
原文: PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...
随机推荐
- HTML 块元素
分为3类 1. 结构块 只能包含块级元素.它们包含结构含义,但没有语义含义,也就是,不能说明内容是什么,只能说明其组织方式. <ol> <ul> <dl> < ...
- img标签src不给路径就会出现边框————记一次二笔的编码经历
<img/>在src加载失败或没有给的,浏览器会自动给img加上边框. 如下图这样: 产品觉得影响美观,一定要pass掉. 原码是这样: .ctn{ position: relative; ...
- Hosts文件小结
今天又遇到Hosts,小结一下: Hosts文件是什么? Hosts文件从表象上来看是一个没有扩展名的系统文件.其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库&qu ...
- iOS开发笔记1:ToDoList、相册、地图应用及新浪微博
前段时间做了一些小东西,一些关键点记录总结如下 1.ToDoList 主要是使用UITableView以及NSUserDefaults完成任务管理,可新建.编辑及删除任务. 因为是Demo性质,所以利 ...
- 多线程在iOS开发中的应用
多线程基本概念 01 进程 进程是指在系统中正在运行的一个应用程序.每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 02 线程 2-1 基本概念 1个进程要想执行任务,必须得有线程 ...
- android network develop(3)----Xml Parser
Normally, there are three type parser in android. Xmlpullparser, DOM & SAX. Google recomand Xmlp ...
- opencms忘记Admin用户登录密码解决方案
不知道现在还有多少人在用opencms: 我今天就是遇到一个问题,很久之前部署的一台opencms服务器,突然忘记密码了,记录下处理方法: 希望对你有帮助: opencms忘记Admin用户登录密码了 ...
- android多种布局的列表实现
最近有一个列表效果,需要一个列表有多种布局,最终效果如下: 这个我也问了同事以及开发群里的朋友,居然都没得到最优的实现方式的回答,看来这种复杂列表的需求还是比较少的,我自己也走了一些弯路,把我几个实现 ...
- Bootstrap的优先级、选择器、伪类
概述:Bootstrap的CSS组件的核心就是选择器的定义以及在各自优先级上的处理.由于大部分的选择器都非常的常见就一笔带过了,这里重点介绍一下Bootstrap用到的知识点. 一.优先级 之前我们使 ...
- HTTPS的七个误解
转自:http://www.ruanyifeng.com/blog/2011/02/seven_myths_about_https.html 开发网页的时候,往往需要观察HTTP通信. 我使用的工具主 ...