1、和mysql扩展库的区别:

(1   安全性、稳定性更高

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

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

3、面向对象:查询列表

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

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

4.1 Sqliconnect.class.php

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

4.2 调用页面startsqli.php

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

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

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

6、事务控制

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

7、预处理技术

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

7.1 预编译插入多个数据

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

7.2 预编译查询多个数据

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

    现阶段php如果要操作mysql数据库 php给我们提供了3套库 1.mysql扩展库   面向过程操作 2.mysqli扩展库  面向对象操作和面向过程操作并存  安全性和效率高于mysql扩展库 ...

  2. php mysqli扩展库之预处理操作

    分享下php使用mysqli扩展库进行预处理操作的二个例子,有意研究mysqli用法的朋友,可以参考学习下,一定会有所帮助的. 例1.使用mysqli扩展库的预处理技术 mysqli stmt 向数据 ...

  3. mysqli扩展库操作mysql数据库

    配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...

  4. 使用php的mysqli扩展库操作mysql数据库

    简单介绍mysqli: 1.mysqli(mysql improve mysql扩展库的增强版) mysql扩展库和mysqli扩展库的区别 1.mysqli的稳定性  安全性 和 执行效率有所提高 ...

  5. PHP使用mysqli扩展库实现增删改查(面向对象版)

    mysqli扩展库是mysql扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli.操作方式大体和 ...

  6. php数据库编程---mysqli扩展库

    1,mysqli扩展库允许我们访问MySQL数据库,并对MySql数据库进行curd操作.Mysqli扩展库比mysql扩展库加强了. 2,mysqli扩展库和mysql扩展库的比较 (1) mysq ...

  7. PHP使用mysqli扩展连接MySQL数据库

    这篇文章主要介绍了PHP使用mysqli扩展连接MySQL数据库,需要的朋友可以参考下 1.面向对象的使用方式 $db = new mysqli('localhost', 'root', '12345 ...

  8. mysqli扩展库应用---程序范例

    通过mysqli扩展库对用户表user1进行增删改查操作,用户表user1结构如下: 1,建立数据库操作类库mysqliTool.class.php,代码如下: <?php class mysq ...

  9. C# .NET更智能的数据库操作封装项目

    前面两篇文章介绍了框架的思路及里面大概的实现过程,那时候忘记上传项目,就补发一下.顺便介绍下框架使用方式,并分析下框架使用的优缺点. 先发一下前两章的链接 篇一:http://www.cnblogs. ...

随机推荐

  1. 我的第一个jsp程序-实现注册登录留言功能

    1,注册功能,包括两个页面 zhuce.jsp注册页面 <%@ page language="java" contentType="text/html; chars ...

  2. 【CodeVS 3289】【NOIP 2013】花匠

    http://codevs.cn/problem/3289/ dp转移,树状数组维护前缀max和后缀max进行优化,$O(nlogn)$. #include<cstdio> #includ ...

  3. Entity Framework Code First (六)存储过程

    声明:本文只针对 EF6+ 默认情况下,Code First 对实体进行插入.更新.删除操作是直接在表上进行的,从 EF6 开始你可以选择使用存储过程(Stored Procedures) 简单实体映 ...

  4. 54B

    The Hedgehog recently remembered one of his favorite childhood activities, - solving puzzles, and go ...

  5. selenium 3 对我们的影响

    The major change in Selenium 3.0 is we're removing the original Selenium Core implementation and rep ...

  6. 【HDU 5750】Dertouzos(数学)

    题目给定n和d,都是10的9次方以内,求1到n里面有几个数最大因数是d?1000000组数据.解:求出d的满足p[i]*d<n的最小质因数是第几个质数.即为答案. #include<cst ...

  7. 关于property的一些知识

    @property (nonatomic,assign,readonly) CGRect retweetViewFrame; retweetViewFrame设置为readonly,只有get方法,没 ...

  8. u Calculate e阶乘相加求和问题

    问题: (n < 10)写个算法 回答: 方法一: #include<stdio.h>  int main()  {      int f[10]={1,1,2,6,24,120,7 ...

  9. css-css权威指南学习笔记3

    第三章 结构和层叠 1.确定应向一个元素应用哪些值时,用户代理不仅要考虑继承,还要考虑声明的特殊性,另外需要考虑声明本身的来源,这个过程就称为层叠.. 2.特殊性.如果一个元素有两个或多个冲突的属性声 ...

  10. MongoDB: CURD操作

    >> 创建:·db.foo.insert({"bar":"baz"}) //如果文档中没有"_id"键会自动增加一个·db.fo ...