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. 【小结】有关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. 计算机网络-TCP连接

    TCP首部20个字节 1.为什么TCP要三次握手建立连接? TCP连接过程,客户端发送请求到服务器,服务器确认请求发送到客户端,客户端再发送确认请求到服务器 原因:简言之,为了防止失效的连接请求发送到 ...

  2. 如何设置让iis服务器支持.apk文件的下载

    随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...

  3. poj1182 带权并查集

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 60225   Accepted: 17656 Description ...

  4. Java-开启一个新的线程

    java实现多线程有2种方法:1扩展java.lang.Thread类:2实现java.lang.Runnable接口 下面举个例子,实现Runnable,来实现多线程 public class Do ...

  5. Selenium+WebDriver+Python 定时控制任务

    为了更对得起"自动化测试"的名号,我们可以设置定时任务,使我们自动化脚本在某个时间点自动运行脚本,这样就可以让测试在夜间进行,减少了时间成本.通过程序来控制test case在什么 ...

  6. jquery提交表单,回调函数

    1.使用jquery 绑定事件,执行以下代码,提交单并使用回调函数 $form.serialize():serialize()序列号表单参数 var $form = $("#form&quo ...

  7. 如何使用TestFlight进行Beta测试

    假如你现在完成一个App的开发并准备进行真机测试,那么请问你会怎么做呢?难道是直截了当的把App扔到App Store上然后下载来试试?当然,如果你的App相当简陋,这么做的话无可厚非.不过如果你要做 ...

  8. hdu5187 奇怪题

    本来很水的,答案就是(2^n)-2,但是写坑了QAQ 因为原题要求答案要mod P,一开始我是这么干的: LL ans=pow_mod(,N,P); ans=(ans-)%P; ) ans=%P; p ...

  9. 分析ffmpeg解析ts流信息的源码

    花费一些时间,然后全部扔了.为了不忘记和抛砖引玉,特发此贴. ffmpeg解析ts流 1.目的     打算软件方式解析出pat,pmt等码流信息 2.源代码所在位置         下载ffmpeg ...

  10. Java replace & replaceAll

    Java字符串中需要对一些字符进行替换,用到最多的是replace和replaceAll两个方法.这两个方法在使用的时候需要注意: replace: public String replace (Ch ...