PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译),mysqli面向对象
PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译),mysqli面向对象
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){} 取出每一个数据

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP开发实践:使用PHPMailer发送邮件到MySQL数据库中的用户引言:在现代互联网建设中,邮件是一种重要的沟通工具。无论是用户注册、密码重置,还是电子商务中的订单确认,发送电子邮件都是必不可少的功能。本文将介绍如何使用PHPMailer来发送电子邮件,并将邮件信息保存到MySQL数据库中的用户信息表中。一、安装PHPMailer库PHPMailer是

随着数据量的不断增加,数据库的性能成为了一个越来越重要的问题。数据冷热分离处理是一种有效的解决方案,它可以将热点数据和冷数据进行分离,从而提高系统的性能和效率。本文将介绍如何使用Go语言和MySQL数据库进行数据冷热分离处理。一、什么是数据冷热分离处理数据冷热分离处理是一种将热点数据和冷数据进行分类处理的方式。热点数据是指访问频率高、对性能要求高的数据,冷数

随着数据量的增加,数据库的备份变得越来越重要。而对于MySQL数据库,我们可以借助Go语言实现自动化的增量备份。本篇文章将简单介绍如何使用Go语言进行MySQL数据库的数据增量备份。一、安装Go语言环境首先,我们需要在本地安装Go语言环境。可以前往官网下载相应的安装包并进行安装。二、安装相应的库Go语言提供了许多访问MySQL数据库的第三方库,其中较为常用的

如何使用MySQL数据库进行时间序列分析?时间序列数据是指按照时间顺序排列的数据集合,它具有时间上的连续性和相关性。时间序列分析是一种重要的数据分析方法,可以用于预测未来趋势、发现周期性变化、检测异常值等。在本文中,我们将介绍如何使用MySQL数据库进行时间序列分析,并附上代码示例。创建数据表首先,我们需要创建一个数据表来存储时间序列数据。假设我们要分析的数

MySQL数据库技能培养到什么程度能够成功就业?随着信息化时代的快速发展,数据库管理系统成为各行各业不可或缺的重要组成部分。而MySQL作为一种常用的关系型数据库管理系统,具有广泛的应用领域和就业机会。那么,MySQL数据库技能需要培养到什么程度,才能够成功就业呢?首先,掌握MySQL的基本原理和基础知识是最基本的要求。MySQL是一款开源的关系型数据库管理

如何使用MySQL数据库进行图像处理?MySQL是一种强大的关系型数据库管理系统,除了用于存储和管理数据之外,它还可以用于图像处理。本文将介绍如何使用MySQL数据库进行图像处理,并提供一些代码示例。在开始之前,请确保已经安装了MySQL数据库,并且已经熟悉了基本的SQL语句。创建数据库表格首先,创建一个新的数据库表格,用于存储图像数据。表格的结构可以如下所

随着大量的数据需要存储和处理,MySQL已经成为了应用开发中最常用的关系型数据库之一。而Go语言由于其高效并发处理和简洁的语法,也越来越受到开发者的欢迎。本文就将带领读者通过Go语言实现可靠的MySQL数据库连接,让开发者能够更加高效地查询和存储数据。一、Go语言连接MySQL数据库的几种方式Go语言中连接MySQL数据库通常有3种方式,分别是:1.第三方库

随着业务的增长和数据库版本升级等因素,数据库迁移变得越来越普遍。在进行数据迁移时,选择合适的工具和语言非常重要。本文将介绍如何使用Go语言进行MySQL数据库的数据迁移。安装MySQL驱动在使用Go语言进行MySQL数据库迁移前,需要首先安装MySQL驱动。在Go语言中,有很多MySQL驱动可供选择。在本文中,我们将选择最常用的官方MySQL驱动包-"dat
