从PHP5.0开始可以使用mysql(i), 是一个面向对象的技术(新加功能都会以对象形式添加)

i:表示改进,1. 功能增加了, 2,效率大大增加(以后的PHP项目改成mysqli),3,更稳定

mysqli使用面向对象技术,但也支持过程化的使用方式

mysqli扩展中给我提供了三个类:

1. mysqli和连接有关的类

2. mysqli_result表达了对数据库的查询所返回的结果集。

3. mysqli_stmt (后面重点介绍)

可以选择过程化编程,或是选择面向对象技术

mysql(i)_connect()

  面向对象:$mysqli = new $mysqli("localhost", "username", "password", "select_db");  //实例化对象

  面向过程:$mysqli = mysqli_connect("localhost", "username", "password", "select_db");
mysql(i)_select_db();
mysql(i)_query();

注:一般使用mysqli扩展就要使用面向对象的编程方式进行开发

1、mysqli处理结果集(mysqli_result)

使用select语句后,得到的结果集的处理

一、处理记录
属性:mysqli_num_rows();  //返回结果集中行的数量
方法:
data_seek();  //调整结果集指针到结果集任意一行
fetch_assoc();  //从结果集中取得一行作为关联数组
fetch_row();    //从结果集中取得行

注:常用的为上面两个
fetch_array();  //从结果集中取得一行作为数字数组或关联数组
fetch_object();  //从结果集中取得当前行,并作为对象返回。

free_result();  //释放结果内存

二、处理字段信息
field_count;  //返回最近查找的列数
current_field;  //获取结果指针的当前字段偏移量
lengths;      //返回结果集中当前行的列的长度

fetch_field();    //从结果集中取得下一字段,并作为对象返回。
fetch_fields();    //返回结果集中代表字段(列)的对象的数组,然后输出每个字段名称、表格和最大长度

2、mysqli完成事务处理和一次执行多条sql语句

一、使用mysqli执行多条语句
a、就是没有结果集(如:插入、更新、删除等语句)
b、多条语句有结果集

二、使用mysqli完成事务处理
事务处理 (多个SQL要完成的任务看为是一个事务)一件事(有任何一个环节出错,都整个事务撤消, 如果都成功才去提交)

目前只有InnoDB 支持事务 (MyISAM)

默认表都是自动提交的(autocommit)

1. 关闭自动提交

2. start事务(如果自动提交已经关闭,使用mysqli不需要开启事务,PDO中则需要)

[start transaction:开启事务,在mysql中输入]

commit;    //提交事务

rollback;    //回滚当前事务

multi_query;   //执行多条数据库语句

三、其他的mysqli类的中的成员使用

3、mysqli预处理类

mysqli_stmt预处理类(推荐你使用的类)

	$mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");

	//准备好一条语句放到服务器中,插入语句
$sql="insert into shops(name, price, num, desn) values(?, ?, ?, ?)"; $stmt=$mysqli->prepare($sql); //给占位符号每个?号传值(绑定参数) i:整形 d:浮点 s:字符 b:二进制
$stmt->bind_param("sdis", $name, $price, $num, $desn); $name="zhangsan";
$price=56.78;
$num=66;
$desn="hello good"; //执行
$stmt->execute();
$stmt->close();

  

和mysqli和mysqli_result相比优点:
1. mysqli和mysqli_result参完成的功能,都可以使用mysqli_stmt完成

2. 效率上:高, 就是如果执行多次相同的语句,只有语句数据不同, 因为将一条语句在服务器端准备好,然后将不同的值传给服务器,再让这条语句执行

编译一次,使用多次

3. 安全上:SQL注入(? 占位) ,后期传的值不会当成SQL语句

PHP.15-mysqli的更多相关文章

  1. php mysqli mysqli_query() mysqli_real_query()

    2016年11月26日 15:22:27 星期六 场景: PHP从mysql中读取数据 1. 一次性读取所有数据返给PHP 2. 每次循环只读取一掉记录 数据量小的时候可以使用第一种方法, 数据量很大 ...

  2. php示例代码之使用mysqli对象

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  3. PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)

    1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面 ...

  4. PHP基础 mysqli的事务处理

    1: <?php 2: // PHP 的mysqli的事务处理 3: //======================================================== 4: ...

  5. PHP的 Mysqli扩展库的多语句执行

    $mysqli->multi_query($sqls);     执行多个sql语句,返回true/false 有结果集时,使用 $mysqli->store_result(); 来获取结 ...

  6. 【PHP&&mysqli】

    msyqli和mysql只有一个字母的差别,真正的含义是msyql的增强版扩展. MySQL可以处理满足程序员对MySQL数据库操作的各种需要了,为什么还需要mysqli呢?因为mysqli支持面性对 ...

  7. php mysqli MySQL server has gone away 问题分析

    结论 mysqli没有处理对端(MySQL server)的断开请求.在send时,收到对端(MySQL server)的RST,会打印MySQL server has gone away. 环境 x ...

  8. PHP 扩展在 Linux(centos7)系统下的编译与安装 以 mysqli 为例

    (操作系统 Centos7,环境版本 php7) 01,进入到 PHP 解压后的源码包的的 ext 文件夹 02,查看是否存在 mysqli 扩展 => ls, 如果不存在需要去响应网站下载 ( ...

  9. php mysqli 链接数据库 CURD 增改查删

    <?php function println($msg) { echo "<br>"; echo $msg; } $mysql_server_name = &qu ...

  10. php安装后,再添加模块pdo_mysql,mysqli

    windows下,是动态链接库.dll,linux下是.so. linux下,假设php安装在/usr/local/php,php的源码包放在/usr/local/php-5.6.15 去php源码包 ...

随机推荐

  1. ArcGIS几种数据格式2

    各种数据的组织形式不一样,其中shp.Coverage.Raster.CAD为文件类型,Geodatabase为空间数据库.Workstaion常用Coverage数据格式.现在ESRI公司推荐使用G ...

  2. spring-cloud构架微服务(2)-全局配置二

    接上篇,实际项目中,可能会遇到有些配置项,例如:邮件地址.手机号等在服务已经上线之后做了改动(就当会出现这种情况好了).然后你修改了配置信息,就得一个一个去重启对应的服务.spring-全局配置提供了 ...

  3. lrzsz的使用

    可以方便的在本地PC机和远程服务器之间传输文件. 1.下载 直接在centos上执行命令yum -y install lrzsz 2.上传文件 rz // 上传文件,执行命令rz,会跳出文件选择窗口, ...

  4. IIS 发表web 之后,访问注册表项失败得问题

    错误: 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\xx\xxxx\xxxxx”的访问被拒绝. 解决办法: 打开IIS,找到应用程序池,然后找到自己web使用得程序池,右键高级 ...

  5. 分享一个JDK1.8丢失数字精度的案例

    差异出现在 DigitList.java的 round() 方法处理上: 1.6: 1.8: 根据设置规则消除无需显示的数字时,JDK1.8 新增了一个二进制数向ASCII码转换的过程如下: 从而导致 ...

  6. UIView设置阴影无效的原因之一

    本想在底部的按钮设置个阴影, 代码如下: self.layer.shadowColor = [UIColor blackColor].CGColor; self.layer.shadowOffset ...

  7. Annual Congress of MUD(最大流)

    Annual Congress of MUD 时间限制: 1 Sec  内存限制: 128 MB提交: 80  解决: 10[提交] [状态] [讨论版] [命题人:admin] 题目描述 Multi ...

  8. 2017.9.24 JSP动态页面

    1.1 JSP(Java Server Page)是一种运行在服务器端的脚本语言,用来开发动态网页的开发技术. 1.2 JSP页面的结构 JSP页面主要由HTML和JSP代码构成,JSP代码是通过&q ...

  9. MapReduce计算每年最大值

    1. 测试文件生成程序,参考 https://www.cnblogs.com/jonban/p/10555364.html MapReduce程序示例如下: 2. 新建Maven项目  hadoop ...

  10. Android Studio项目中三种依赖的添加方式

    通常一个AS项目中的依赖关系有三种,一是本地依赖(主要是对本地的jar包),二是模块依赖,三是远程依赖:添加这些依赖的目的在于上我们想要在项目的某一个模块中使用其中的功能,比如okttp这个网络框架库 ...