PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译),mysqli面向对象_PHP教程
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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP開發實務:使用PHPMailer發送郵件到MySQL資料庫中的使用者引言:在現代互聯網建設中,郵件是一種重要的溝通工具。無論是用戶註冊、密碼重置,還是電子商務中的訂單確認,發送電子郵件都是必不可少的功能。本文將介紹如何使用PHPMailer來傳送電子郵件,並將郵件資訊儲存到MySQL資料庫中的使用者資訊表中。一、安裝PHPMailer庫PHPMailer是

隨著資料量的不斷增加,資料庫的效能成為了一個越來越重要的問題。資料冷熱分離處理是一種有效的解決方案,它可以將熱點資料和冷資料分離,從而提高系統的效能和效率。本文將介紹如何使用Go語言和MySQL資料庫進行資料冷熱分離處理。一、什麼是資料冷熱分離處理資料冷熱分離處理是一種將熱點資料和冷資料進行分類處理的方式。熱點數據是指存取頻率高、對效能要求高的數據,冷數

如何使用MySQL資料庫進行時間序列分析?時間序列資料是指依照時間順序排列的資料集合,它具有時間上的連續性和相關性。時間序列分析是一種重要的資料分析方法,可用於預測未來趨勢、發現週期性變化、檢測異常值等。在本文中,我們將介紹如何使用MySQL資料庫進行時間序列分析,並附上程式碼範例。建立資料表首先,我們需要建立一個資料表來儲存時間序列資料。假設我們要分析的數

如何使用MySQL資料庫進行影像處理? MySQL是一種強大的關聯式資料庫管理系統,除了用於儲存和管理資料之外,它還可以用於映像處理。本文將介紹如何使用MySQL資料庫進行影像處理,並提供一些程式碼範例。在開始之前,請確保已經安裝了MySQL資料庫,並且已經熟悉了基本的SQL語句。建立資料庫表格首先,建立一個新的資料庫表格,用於儲存影像資料。表格的結構可以如下所

MySQL資料庫技能培養到什麼程度能夠成功就業?隨著資訊化時代的快速發展,資料庫管理系統成為各行各業不可或缺的重要組成部分。而MySQL作為一種常用的關係型資料庫管理系統,具有廣泛的應用領域和就業機會。那麼,MySQL資料庫技能需要培養到什麼程度,才能夠成功就業呢?首先,掌握MySQL的基本原理和基礎知識是最基本的要求。 MySQL是一款開源的關聯式資料庫管理

隨著資料量的增加,資料庫的備份變得越來越重要。而對於MySQL資料庫,我們可以藉助Go語言實現自動化的增量備份。本篇文章將簡單介紹如何使用Go語言進行MySQL資料庫的資料增量備份。一、安裝Go語言環境首先,我們需要在本地安裝Go語言環境。可前往官網下載對應的安裝包並進行安裝。二、安裝對應的函式庫Go語言提供了許多存取MySQL資料庫的第三方函式庫,其中較為常用的

隨著大量的資料需要儲存和處理,MySQL已經成為了應用程式開發中最常用的關聯式資料庫之一。而Go語言由於其高效並發處理和簡潔的語法,也越來越受到開發者的歡迎。本文將帶領讀者透過Go語言實現可靠的MySQL資料庫連接,讓開發者更有效率地查詢並儲存資料。一、Go語言連接MySQL資料庫的幾種方式Go語言中連接MySQL資料庫通常有3種方式,分別是:1.第三方函式庫

如何為MySQL資料庫實現雙向SSL認證什麼是雙向SSL認證?雙向SSL(SecureSocketsLayer)認證是一種加密通訊方式,它要求服務端和客戶端之間互相驗證對方的身分。在資料庫中,雙向SSL認證可確保只有經過授權的使用者和應用程式可以連接和通信,提高資料安全性。準備工作在開始設定雙向SSL認證之前,請確保以下條件已滿足:已獲
