1、和mysql扩展库的区别:

(1   安全性、稳定性更高

(2  提供了面向对象和面向过程两种风格

2、php.ini  中的  extension=php_mysqli.dll 解除封印

3、面向对象:查询列表

 1 <?php
 2
 3   //mysqli 操作数据(面向对象风格)
 4
 5   #1、创建Mysql对象
 6
 7   $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
 8   if(!$mysqli)
 9   {
10        die("连接失败!".$mysqli->connect_error);
11   }
12
13   #2、操作数据库
14
15   $sql="select * from user1";
16   $res=$mysqli->query($sql);
17   #3、处理结果
18
19   while($row=$res->fetch_row())
20   {
21       foreach($row as $key=> $val)
22       {
23           echo "-- $val";
24       }
25       echo "<br/>";
26   }
27   #4、关闭资源
28   $res->free();//释放内存
29   $mysqli->close();//关闭连接
30
31 ?>

4、面向对象:封装类后实现

4.1 Sqliconnect.class.php

 1 <?php
 2
 3    Class Sqliconnect
 4    {
 5         private $mysqli;
 6         private static $host="127.0.0.1";
 7         private static $root="root";
 8         private static $password="daomul";
 9         private static $db="test";
10
11         function __construct()
12         {
13              $this->mysqli=new MySQLi(self::$host,self::$root,self::$password,self::$db);
14              if(!$this->mysqli)
15              {
16                    die("数据库连接失败!".$this->mysqli->connect_error);
17              }
18
19              $this->mysqli->query("set names utf8");
20         }
21
22         //查询操作
23         public function excute_dql($sql)
24         {
25               $res=$this->mysqli->query($sql) or die("数据查询失败".$this->mysqli->error);
26               return $res;
27
28         }
29
30         //增删改操作
31         public function excute_dml($sql)
32         {
33               $res=$this->mysqli->query($sql) or die("数据操作失败".$this->mysqli->error);
34               if(!$res)
35               {
36                    echo "数据操作失败";
37               }
38               else
39               {
40                    if($this->mysqli->affected_rows>0)
41                    {
42                          echo "操作成功!";
43                    }
44                    else
45                    {
46                         echo "0行数据受影响!";
47                    }
48               }
49         }
50
51    }
52 ?>

4.2 调用页面startsqli.php

 1 <?php
 2
 3   //mysqli 操作数据(面向对象风格)
 4
 5
 6   require_once "Sqliconnect.class.php";
 7
 8   $Sqliconnect=new Sqliconnect();
 9
10   //$sql="insert into user1(name,password,email,age) values('帝都',md5('gg'),'sd@sohu.com',23)";
11   //$sql="delete from user1 where id=11";
12   //$res=$Sqliconnect->excute_dml($sql);
13
14   $sql="select name from user1;";
15   $res=$Sqliconnect->excute_dql($sql);
16   while($row=$)
17
18   $res->free();
19 ?>

5、同时执行多条数据库语句 multiQuery.php

 1 <?php
 2
 3   //mysqli 操作数据(面向对象风格)
 4
 5   #1、创建Mysql对象
 6
 7   $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
 8   if(!$mysqli)
 9   {
10        die("连接失败!".$mysqli->connect_error);
11   }
12
13   #2、操作数据库
14
15   $sqls="select * from user1;";
16   $sqls.="select * from user1";
17
18   #3、处理结果
19
20   if($res=$mysqli->multi_query($sqls))
21   {
22        echo "211";
23      do
24      {
25           //从mysqli连续取出第一个结果集
26           $result=$mysqli->store_result();
27
28           //显示mysqli result对象
29           while($row=$result->fetch_row())
30           {
31             foreach($row as $key=> $val)
32             {
33                 echo "-- $val";
34             }
35            echo "<br/>";
36          }
37
38        $result->free();//及时释放当前结果集,并进入下一结果集
39
40          //判断是否有下一个结果集
41          if(!$mysqli->more_results())
42          {
43            break;
44          }
45        echo "<br/>************新的结果集**************";
46
47      }while($mysqli->next_result());
48  }
49
50   #4、关闭资源
51   $mysqli->close();//关闭连接
52
53
54 ?>

6、事务控制

 1 <?php
 2
 3   //mysqli 操作数据(面向对象风格)
 4
 5
 6    // 数据库 :create table account(id int primary key,balance float);
 7
 8   $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
 9   if(!$mysqli)
10   {
11        die("数据库连接失败!".$mysqli->connect_error);
12   }
13   //将提交设为false
14   $mysqli->autocommit(false);
15
16   $sql1="update account set balance=balance+1 where id=1;";//没错的语句
17   $sql2="update accounterror2 set balance=balance-1 where id=2";//有错的语句
18
19   $res1=$mysqli->query($sql1);
20   $res2=$mysqli->query($sql2);
21
22   if(!$res1||!$res2)
23   {
24       //回滚:其中一个不成功即回滚不提交
25        echo "有错,回滚,请重新提交!";
26        $mysqli->rollback();//die("操作失败!".$mysqli->error);
27   }
28   else
29   {
30       //所有均成功则提交
31        echo "所有提交成功!";
32        $mysqli->commit();
33   }
34
35   $mysqli->close();
36   /*
37     1、 start transaction; 开启事务
38     2、svaepoint a;    做保存点
39     3、执行操作1;
40     4、 svaepoint b;
41     5、执行操作2;
42     ...
43     6、rollback to a/b; 回滚或者是提交
44     7、commit
45
46     事务控制特点acid  原子性/一致性/隔离性/持久性
47    */
48 ?>

7、预处理技术

主要在连接和编译过程精简,还可以SQL防止注入

7.1 预编译插入多个数据

 1 <?php
 2
 3   //mysqli 预编译演示
 4
 5   #1、创建mysqli对象
 6   $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
 7   if(!$mysqli)
 8   {
 9        die("数据库连接失败!".$mysqli->connect_error);
10   }
11
12   #2、创建预编译对象
13   $sql="insert into user1(name,password,email,age) values(?,?,?,?);";//暂时不赋值,用问号代替
14   $stmt=$mysqli->prepare($sql) or die($mysqli->error);
15
16   /********************************可重复执行时需要的代码start*********************************/
17   #3、绑定参数
18   $name='小明5';
19   $password='34f';
20   $email='ssd@qq.com';
21   $age='1';
22
23   #4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b
24   $stmt->bind_param("sssi",$name,$password,$email,$age);
25
26   #5、执行代码(返回布尔类型)
27   $flag=$stmt->execute();
28
29  /********************************可重复执行时需要的代码 end************************************/
30
31   #6、结果以及释放
32
33   if(!$flag)
34   {
35       die("操作失败".$stmt->error);
36   }
37   else
38   {
39       echo "操作成功!";
40   }
41
42   $mysqli->close();
43
44
45 ?>

7.2 预编译查询多个数据

 1 <?php
 2
 3   //mysqli 预编译演示
 4
 5   #1、创建mysqli对象
 6   $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
 7   if(!$mysqli)
 8   {
 9        die("数据库连接失败!".$mysqli->connect_error);
10   }
11
12    /********************************可重复执行时需要的代码 start*******************************/
13
14   #2、创建预编译对象
15   $sql="select id,name,email from user1 where id>?;";//id,name,email和后面的结果集bind_result()对应
16   $stmt=$mysqli->prepare($sql) or die($mysqli->error);
17
18   #3、绑定参数
19   $id=5;
20
21   #4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b
22   $stmt->bind_param("i",$id);//绑定参数
23   $stmt->bind_result($id,$name,$email);//绑定结果集
24
25   #5、执行代码(返回布尔类型)
26   $stmt->execute();
27
28   #6、取出结果集显示
29   while($stmt->fetch())
30   {
31       echo "<br/>$id--$name--$email";
32   }
33
34   /********************************可重复执行时需要的代码 end*******************************/
35
36   #7、结果以及释放
37
38   //释放结果
39   $stmt->free_result();
40   //关闭预编译语句
41   $stmt->close();
42   //关闭数据库连接
43   $mysqli->close();
44
45
46 ?>

8、其他函数

(1  获取行数和列数  num_rows   field_count

(2  获取结果集的一列 :表头 例如

$result=$mysqli->query();

$result->fetch_field();

(3 取出数据

$row=$result->fetch_row(); //获得每一行数据

再通过 foreach($row as $val){} 取出每一个数据

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

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

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

  2. mysqli扩展是mysql扩展的增强版_PHP学习笔记【22】--PHP数据库编程 mysql扩展库 和mysqli扩展库...

    <?php         // php数据库编程     //php链接有 mysql 和mysqli    //    $conn  = mysql_connect("localh ...

  3. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第39讲:PHP数据库编程MySQLi扩展库

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第39讲:PHP数据库编程MySQLi扩展库 mysqli扩展允许我们访问MySQL 数据库,并对MySql数据库进行curd操作.mysqli扩展可以进行数 ...

  4. mysql数据库与mysqli_通过 PHP Mysqli 扩展与 MySQL 数据库交互

    通过 PHP Mysqli 扩展与 MySQL 数据库交互 由 学院君 创建于8个月前, 最后更新于 6个月前 版本号 #1 1269 views 0 likes 0 collects 引言 前面学院 ...

  5. Duang~MySQLi 扩展库来袭

    PHP-MySQL 函数库是 PHP 操作 MySQL 资料库最原始的扩展库,PHP-MySQLi 的 i 代表 Improvement ,相当于前者的增强版,也包含了相对进阶的功能,另外本身也增加了 ...

  6. 封装php框架视频教程_自编PHP框架一(数据库操作封装)

    自编PHP框架之数据库PDO层封装和模型类部分方法的编写 如果你是喷子,问我造轮子花这么多精力有什么用的话,那就走,看看我的这篇文章 为什么我要写自己的框架?框架所有的代码都在笔者的Github上做展 ...

  7. BerkeleyDB-JE数据库操作封装

    2019独角兽企业重金招聘Python工程师标准>>> /*  * BDB je操作核心类  */ package com.ego.data.db.bdb; import com.e ...

  8. 数据库封装 sql server mysql_sqlserver数据库操作封装

    1 public classSQLServerDatabase2 {3 private static SqlConnection m_Connection = null;4 5 public SQLS ...

  9. DJango周总结二:模型层,单表,多表操作,连表操作,数据库操作,事务

    django周复习二  1,模型层:   1单表操作:    13个必会操作总结     返回QuerySet对象的方法有     all()     filter()     exclude()   ...

最新文章

  1. Visual Studio的导入和导出设置
  2. [ZJOI2005]午餐(贪心+dp)
  3. cvMatchTemplate() 模板匹配
  4. 字体和font-family对照表
  5. hive sql 正则表达式
  6. 电子设计教程9:Boost升压电路(MC34063)
  7. 华硕 tuf b360 efi_技嘉小雕、微星迫击炮、华硕电竞特工三款主板对比
  8. 软件设计师考试真题链接
  9. SQL server查询试题
  10. 视频分割软件有什么,怎么分割视频
  11. iOS创建pch文件
  12. 〖Python WEB 自动化测试实战篇③〗- python-selenium环境配置搭建
  13. Fortunate Finds
  14. i3 10100F和R3 3200G哪个好
  15. c语言选择结构作用,c语言选择结构程序设计教案
  16. protobuf官方文档学习
  17. 【Celery】Celery的简易部署和应用
  18. 【论文极速看】ERNIE-VIL 一种基于场景图解析的多模态表征方法
  19. 10/11论文关键词,自动去偏框架论文翻译,发文章思考
  20. 2014阿里校园招聘软件工程师笔试题(9.22武汉站)

热门文章

  1. AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结
  2. Django 中的 cookie 和 session
  3. linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改
  4. [ CodeVS冲杯之路 ] P1044
  5. 只能在执行 Render() 的过程中调用 RegisterForEventValidation
  6. 给大家推荐几本经典技术书籍
  7. WPF以Clickonce方式发布后使用管理员身份运行
  8. 使用MATLAB如何生成jar包
  9. 初学Java--计算器
  10. 计算机科学 生物技术,计算机科学(Computer Science)简介