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 "
";

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 "
";

36 }

37

38 $result->free();//及时释放当前结果集,并进入下一结果集

39

40 //判断是否有下一个结果集

41 if(!$mysqli->more_results())

42 {

43 break;

44 }

45 echo "
************新的结果集**************";

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 "
$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面向对象封装mysql_PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)...相关推荐

  1. 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. php面向对象封装mysql_php mysqli面向对象封装mysql数据库常用操作

    首先封装好mysql类 mysql.php class Mysql{ private static $host="localhost"; private static $user= ...

  8. php使用mysqli连接mysql数据库_PHP使用mysqli扩展连接MySQL数据库

    1.面向对象的使用方式 $db = new mysqli('localhost', 'root', '123456', 'dbname'); 如果建立连接时未指定数据库则选择使用的数据库,切换使用的数 ...

  9. php利用mysql扩展库向数据库插入数据的步骤与案例

    1:程序代码 <?php //演示对user1表进行增删改查的操作 $conn = mysql_connect("localhost", "root",  ...

最新文章

  1. debian linux忘记密码,debian ubuntu linux 忘记root密码的重置方法
  2. POJ 1207 The 3n + 1 problem
  3. 解决Canvas.toDataURL 图片跨域问题
  4. [react] 怎样在react中创建一个事件?
  5. 如何正确的关闭 MFC 线程
  6. 网站压力测试工具 webbench
  7. xcode 中不小心删除 stroryboard 的恢复办法
  8. 128道软件测试面试题,面试及答案,视频讲解
  9. HTML特殊字符转义
  10. sqluldr2 用法简述
  11. 显示器尺寸对照表_常见像素和显示屏大小对照表
  12. 基于 Openpose 实现人体动作识别
  13. 微信小程序 三角形实现 (评论三角形)
  14. OpenGL 亮度调节
  15. 四川企立方电商:拼多多降价导致降权怎么
  16. 阿里云最新云服务器价格表查询地址(官网)
  17. java 强制类型转换
  18. MultiValueMap
  19. [bzoj1601]灌水(洛谷P1550)
  20. selenium模拟登陆截取验证码

热门文章

  1. android 打开SD卡文件夹,并获得选中文件的路径怎么实现?
  2. 奢侈品网购真正大牌占比未过半:被指只剩噱头
  3. 客户端压测server端计算qps以及不同延迟时间下响应数量所占百分比
  4. python编程八年级_8年级Python编程课程期中反思
  5. 【免费毕设】JAVA监听系统的设计与开发(源代码+论文)
  6. linux 移动硬盘 优化,不花一分钱,给移动硬盘加速
  7. 如何将一个完整项目推到码云_怎么将本地项目放到码云(gitee)上面?图文详解
  8. python前端开发招聘_[昆明] EMQX 招聘 Python ,前端开发工程师
  9. 99数据集预处理_深度学习在放射治疗的应用—工具篇(五)数据集构建
  10. mysql数据库 integer_MySQL数据库中,常用的数据类型