100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译) mysqli面向对象

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

时间:2020-11-10 20:08:39

相关推荐

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

php教程|php手册

mysql数据库

php教程-php手册

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

转盘抽奖源码 数据库,忘记ubuntu用户密码,tomcat 连接数线程数,爬虫怎样抓数据,apache的设置与php绑定,日喀则谷歌seolzw

影视源码的默认归属,ssh访问拒绝ubuntu,php爬虫爬视频,php 无限跳转,seo算法lzw

1、和mysql扩展库的区别:

mvc 权限源码,vscode支持asp,腾讯轻量服务器ubuntu,tomcat最大日志,sqlite有事务吗,引导页插件,前端网页开发框架下载,爬虫抓邮箱违法吗,php返回页面,google seo 前途,网站自动加水印,javascript 网页对话框,免费下载模板的网站有哪些lzw

(1 安全性、稳定性更高

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

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

3、面向对象:查询列表

1 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 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);26return $res;2728 }29 30 //增删改操作31 public function excute_dml($sql)32 {33$res=$this->mysqli->query($sql) or die("数据操作失败".$this->mysqli->error);34if(!$res)35{36 echo "数据操作失败";37}38else39{40 if($this->mysqli->affected_rows>0)41 {42echo "操作成功!";43 }44 else45 {46 echo "0行数据受影响!";47 }48}49 }50 51 }52 ?>

4.2 调用页面startsqli.php

1 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 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";23do 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}3738 $result->free();//及时释放当前结果集,并进入下一结果集3940//判断是否有下一个结果集41if(!$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 connect_error);12 }13 //将提交设为false14 $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 else29 {30 //所有均成功则提交31 echo "所有提交成功!";32 $mysqli->commit();33 }34 35 $mysqli->close();36 /* 371、 start transaction; 开启事务382、svaepoint a; 做保存点393、执行操作1; 404、 svaepoint b;415、执行操作2;42...436、rollback to a/b; 回滚或者是提交447、commit 4546事务控制特点acid 原子性/一致性/隔离性/持久性47 */48 ?>

7、预处理技术

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

7.1 预编译插入多个数据

1 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@;21 $age=1;22 23 #4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b24 $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 else38 {39 echo "操作成功!";40 }41 42 $mysqli->close();43 44 45 ?>

7.2 预编译查询多个数据

1 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-b22 $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){} 取出每一个数据

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。