Table des matières
PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译),mysqli面向对象
Maison développement back-end tutoriel php PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译),mysqli面向对象_PHP教程

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

Jul 12, 2016 am 08:50 AM
mysql数据库

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 ?>
Copier après la connexion
复制代码

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 ?>
Copier après la connexion

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 ?>
Copier après la connexion

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 ?>
Copier après la connexion

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 ?>
Copier après la connexion

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 ?>
Copier après la connexion

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 ?>
Copier après la connexion
 

 

8、其他函数

    (1  获取行数和列数  num_rows   field_count

    (2  获取结果集的一列 :表头 例如

              $result=$mysqli->query();

              $result->fetch_field();

    (3 取出数据

             $row=$result->fetch_row(); //获得每一行数据

             再通过 foreach($row as $val){} 取出每一个数据

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1133533.htmlTechArticlePHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译),mysqli面向对象 1、和mysql扩展库的区别: (1 安全性、稳定性更高 (2 提供了...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pratique de développement PHP : utilisez PHPMailer pour envoyer des e-mails aux utilisateurs de la base de données MySQL Pratique de développement PHP : utilisez PHPMailer pour envoyer des e-mails aux utilisateurs de la base de données MySQL Aug 05, 2023 pm 06:21 PM

Pratique de développement PHP : utilisez PHPMailer pour envoyer des e-mails aux utilisateurs de la base de données MySQL Introduction : Dans la construction de l'Internet moderne, l'e-mail est un outil de communication important. Qu’il s’agisse d’enregistrement d’utilisateur, de réinitialisation de mot de passe ou de confirmation de commande en e-commerce, l’envoi d’emails est une fonction essentielle. Cet article explique comment utiliser PHPMailer pour envoyer des e-mails et enregistrer les informations de courrier électronique dans le tableau d'informations utilisateur de la base de données MySQL. 1. Installez la bibliothèque PHPMailer PHPMailer est

Go langage et base de données MySQL : Comment séparer les données chaudes et froides ? Go langage et base de données MySQL : Comment séparer les données chaudes et froides ? Jun 18, 2023 am 08:26 AM

À mesure que la quantité de données continue d’augmenter, les performances des bases de données deviennent un problème de plus en plus important. Le traitement de séparation des données chaudes et froides est une solution efficace qui peut séparer les données chaudes et les données froides, améliorant ainsi les performances et l'efficacité du système. Cet article explique comment utiliser le langage Go et la base de données MySQL pour séparer les données chaudes et froides. 1. Qu'est-ce que le traitement de séparation des données chaudes et froides ? Le traitement de séparation des données chaudes et froides est un moyen de classer les données chaudes et les données froides. Les données chaudes font référence aux données avec une fréquence d'accès élevée et des exigences de performances élevées.

Comment effectuer une sauvegarde incrémentielle des données de la base de données MySQL à l'aide du langage Go Comment effectuer une sauvegarde incrémentielle des données de la base de données MySQL à l'aide du langage Go Jun 17, 2023 pm 02:28 PM

À mesure que la quantité de données augmente, la sauvegarde des bases de données devient de plus en plus importante. Pour la base de données MySQL, nous pouvons utiliser le langage Go pour réaliser une sauvegarde incrémentielle automatisée. Cet article présentera brièvement comment utiliser le langage Go pour effectuer une sauvegarde incrémentielle des données de la base de données MySQL. 1. Installez l'environnement linguistique Go. Tout d'abord, nous devons installer l'environnement linguistique Go localement. Vous pouvez vous rendre sur le site officiel pour télécharger le package d'installation correspondant et l'installer. 2. Installez la bibliothèque correspondante. Le langage Go fournit de nombreuses bibliothèques tierces pour accéder aux bases de données MySQL, parmi lesquelles les plus couramment utilisées sont

Dans quelle mesure puis-je développer des compétences en matière de bases de données MySQL pour être employées avec succès ? Dans quelle mesure puis-je développer des compétences en matière de bases de données MySQL pour être employées avec succès ? Sep 12, 2023 pm 06:42 PM

Dans quelle mesure puis-je développer des compétences en matière de bases de données MySQL pour être employées avec succès ? Avec le développement rapide de l’ère de l’information, les systèmes de gestion de bases de données sont devenus un élément indispensable et important dans tous les domaines. En tant que système de gestion de bases de données relationnelles couramment utilisé, MySQL propose un large éventail de domaines d'application et d'opportunités d'emploi. Alors, dans quelle mesure les compétences en matière de bases de données MySQL doivent-elles être développées pour être utilisées avec succès ? Tout d’abord, maîtriser les principes de base et les connaissances de base de MySQL est la condition la plus fondamentale. MySQL est une gestion de base de données relationnelle open source

Comment utiliser la base de données MySQL pour l'analyse de séries chronologiques ? Comment utiliser la base de données MySQL pour l'analyse de séries chronologiques ? Jul 12, 2023 am 08:39 AM

Comment utiliser la base de données MySQL pour l'analyse de séries chronologiques ? Les données de séries chronologiques font référence à une collection de données classées par ordre chronologique, qui présentent une continuité et une corrélation temporelles. L'analyse des séries chronologiques est une méthode d'analyse de données importante qui peut être utilisée pour prédire les tendances futures, découvrir les changements cycliques, détecter les valeurs aberrantes, etc. Dans cet article, nous présenterons comment utiliser une base de données MySQL pour l'analyse de séries chronologiques, ainsi que des exemples de code. Créer une table de données Tout d'abord, nous devons créer une table de données pour stocker les données de séries chronologiques. Supposons que nous voulions analyser le nombre

Base de données MySQL et langage Go : Comment effectuer la mise en cache des données ? Base de données MySQL et langage Go : Comment effectuer la mise en cache des données ? Jun 17, 2023 am 10:05 AM

Ces dernières années, le langage Go est devenu de plus en plus populaire auprès des développeurs et est devenu l'un des langages privilégiés pour développer des applications Web performantes. MySQL est également une base de données populaire et largement utilisée. Dans le processus de combinaison de ces deux technologies, la mise en cache est un élément très important. Ce qui suit explique comment utiliser le langage Go pour gérer le cache de la base de données MySQL. Le concept de mise en cache Dans les applications Web, la mise en cache est une couche intermédiaire créée pour accélérer l'accès aux données. Il est principalement utilisé pour stocker les données fréquemment demandées afin de

Comment utiliser la base de données MySQL pour le traitement d'images ? Comment utiliser la base de données MySQL pour le traitement d'images ? Jul 14, 2023 pm 12:21 PM

Comment utiliser la base de données MySQL pour le traitement d'images ? MySQL est un puissant système de gestion de bases de données relationnelles. En plus d'être utilisé pour stocker et gérer des données, il peut également être utilisé pour le traitement d'images. Cet article explique comment utiliser une base de données MySQL pour le traitement d'images et fournit quelques exemples de code. Avant de commencer, assurez-vous d'avoir installé une base de données MySQL et d'être familiarisé avec les instructions SQL de base. Créer une table de base de données Commencez par créer une nouvelle table de base de données pour stocker les données d'image. La structure du tableau peut être la suivante

Comment établir une connexion fiable à la base de données MySQL en utilisant le langage Go ? Comment établir une connexion fiable à la base de données MySQL en utilisant le langage Go ? Jun 17, 2023 pm 07:18 PM

Avec la grande quantité de données qui doivent être stockées et traitées, MySQL est devenue l'une des bases de données relationnelles les plus couramment utilisées dans le développement d'applications. Le langage Go devient de plus en plus populaire parmi les développeurs en raison de son traitement simultané efficace et de sa syntaxe concise. Cet article amènera les lecteurs à mettre en œuvre une connexion fiable à la base de données MySQL via le langage Go, permettant aux développeurs d'interroger et de stocker les données plus efficacement. 1. Plusieurs façons pour le langage Go de se connecter à la base de données MySQL. Il existe généralement trois façons de se connecter à la base de données MySQL en langage Go, à savoir : 1. Bibliothèque tierce.

See all articles