从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. 夜色的 cocos2d-x 开发笔记 04

    本章会把游戏的基本功能结束,前面实现了子弹发射,产生敌人. 接下来我们要,检测子弹与敌人碰撞,让玩家移动,实现这个游戏的基本功能. 于是多出了这几个方法,当然还是写在.h文件里 首先实现触摸监听的方法 ...

  2. System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

    System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.解决办法是: 而这位大哥提出的解决办法 ...

  3. 项目01-flume、kafka与hdfs日志流转

    项目01-flume.kafka与hdfs日志流转 1.启动kafka集群 $>xkafka.sh start 3.创建kafka主题 kafka-topics.sh --zookeeper s ...

  4. Microsoft EDP(enterprise database protection)选择应用程序在哪里可以访问企业数据

    在配置策略时,对Rule template设置完成后,添加corporate identity.关于corporate identity, 目前没有什么好的理解,翻译过来就是“公司标识”,我也理解不了 ...

  5. SAP成都研究院大卫哥:SAP C4C中国本地化之微信小程序集成

    今天的文章来自Wu David,SAP成都研究院C4C开发团队的架构师,在加入团队之前曾经在SAP上海研究院工作,组内同事习惯亲切地称呼他为大卫哥. 大卫哥身高据Jerry目测有1米8以上,是成都C4 ...

  6. SAP S4CRM和C4C的技术比较

    如果您对SAP S/4HANA for Customer Management(以下简称S4CRM)和SAP Cloud for Customer(以下简称C4C)不甚熟悉,那我建议您可以先浏览我之前 ...

  7. CRM, C4C和Hybris的工作流简介

    CRM的例子 Step by Step to debug IC inbox workflow WS14000164 C4C Custom recipient determination in work ...

  8. IOS 4个容易混淆的属性(textAligment contentVerticalAlignment contentHorizontalAlignment contentMode)

    四个容易混淆的属性:1. textAligment : 文字的水平方向的对齐方式1> 取值NSTextAlignmentLeft      = 0,    // 左对齐NSTextAlignme ...

  9. Linux 源码安装MariaDB 10.0.16

    cmake软件   tar -zxvf cmake-2.8.8.tar.gz cd cmake-2.8.8 ./bootstrap make && make install     依 ...

  10. 【CCPC-Wannafly Winter Camp Day3 (Div1) F】小清新数论(莫比乌斯反演+杜教筛)

    点此看题面 大致题意: 让你求出\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\). 莫比乌斯反演 这种题目,一看就是莫比乌斯反演啊!(连莫比乌斯函数都有) 关于莫比乌 ...