PHP mysql 扩展库 操作mysql数据库步骤

1、和mysql扩展库的区别:

(1   安全性、稳定性更高

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

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

3、面向对象:查询列表

<?php

  //mysqli 操作数据(面向对象风格)

  #1、创建Mysql对象

  $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
  if(!$mysqli)
  {
       die("连接失败!".$mysqli->connect_error);
  }

  #2、操作数据库

  $sql="select * from user1";
  $res=$mysqli->query($sql);
  #3、处理结果

  while($row=$res->fetch_row())
  {
      foreach($row as $key=> $val)
      {
          echo "-- $val";
      }
      echo "<br/>";
  }
  #4、关闭资源
  $res->free();//释放内存
  $mysqli->close();//关闭连接

?>

4、面向对象:封装类后实现

4.1 Sqliconnect.class.php

<?php

   Class Sqliconnect
   {
        private $mysqli;
        private static $host="127.0.0.1";
        private static $root="root";
        private static $password="daomul";
        private static $db="test";

        function __construct()
        {
             $this->mysqli=new MySQLi(self::$host,self::$root,self::$password,self::$db);
             if(!$this->mysqli)
             {
                   die("数据库连接失败!".$this->mysqli->connect_error);
             }

             $this->mysqli->query("set names utf8");
        }

        //查询操作
        public function excute_dql($sql)
        {
              $res=$this->mysqli->query($sql) or die("数据查询失败".$this->mysqli->error);
              return $res;

        }

        //增删改操作
        public function excute_dml($sql)
        {
              $res=$this->mysqli->query($sql) or die("数据操作失败".$this->mysqli->error);
              if(!$res)
              {
                   echo "数据操作失败";
              }
              else
              {
                   if($this->mysqli->affected_rows>0)
                   {
                         echo "操作成功!";
                   }
                   else
                   {
                        echo "0行数据受影响!";
                   }
              }
        }

   }
?>

4.2 调用页面startsqli.php

<?php

  //mysqli 操作数据(面向对象风格)

  require_once "Sqliconnect.class.php";

  $Sqliconnect=new Sqliconnect();

  //$sql="insert into user1(name,password,email,age) values(‘帝都‘,md5(‘gg‘),‘[email protected]‘,23)";
  //$sql="delete from user1 where id=11";
  //$res=$Sqliconnect->excute_dml($sql);

  $sql="select name from user1;";
  $res=$Sqliconnect->excute_dql($sql);
  while($row=$)

  $res->free();
?>

5、同时执行多条数据库语句 multiQuery.php

<?php

  //mysqli 操作数据(面向对象风格)

  #1、创建Mysql对象

  $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
  if(!$mysqli)
  {
       die("连接失败!".$mysqli->connect_error);
  }

  #2、操作数据库

  $sqls="select * from user1;";
  $sqls.="select * from user1";

  #3、处理结果

  if($res=$mysqli->multi_query($sqls))
  {
       echo "211";
     do
     {
          //从mysqli连续取出第一个结果集
          $result=$mysqli->store_result();

          //显示mysqli result对象
          while($row=$result->fetch_row())
          {
            foreach($row as $key=> $val)
            {
                echo "-- $val";
            }
           echo "<br/>";
         }

       $result->free();//及时释放当前结果集,并进入下一结果集

         //判断是否有下一个结果集
         if(!$mysqli->more_results())
         {
           break;
         }
       echo "<br/>************新的结果集**************";

     }while($mysqli->next_result());
 }

  #4、关闭资源
  $mysqli->close();//关闭连接  

?>

6、事务控制

<?php

  //mysqli 操作数据(面向对象风格)

   // 数据库 :create table account(id int primary key,balance float);

  $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
  if(!$mysqli)
  {
       die("数据库连接失败!".$mysqli->connect_error);
  }
  //将提交设为false
  $mysqli->autocommit(false);

  $sql1="update account set balance=balance+1 where id=1;";//没错的语句
  $sql2="update accounterror2 set balance=balance-1 where id=2";//有错的语句

  $res1=$mysqli->query($sql1);
  $res2=$mysqli->query($sql2);

  if(!$res1||!$res2)
  {
      //回滚:其中一个不成功即回滚不提交
       echo "有错,回滚,请重新提交!";
       $mysqli->rollback();//die("操作失败!".$mysqli->error);
  }
  else
  {
      //所有均成功则提交
       echo "所有提交成功!";
       $mysqli->commit();
  }

  $mysqli->close();
  /*
    1、 start transaction; 开启事务
    2、svaepoint a;    做保存点
    3、执行操作1;
    4、 svaepoint b;
    5、执行操作2;
    ...
    6、rollback to a/b; 回滚或者是提交
    7、commit 

    事务控制特点acid  原子性/一致性/隔离性/持久性
   */
?>

7、预处理技术

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

7.1 预编译插入多个数据

<?php

  //mysqli 预编译演示

  #1、创建mysqli对象
  $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
  if(!$mysqli)
  {
       die("数据库连接失败!".$mysqli->connect_error);
  }

  #2、创建预编译对象
  $sql="insert into user1(name,password,email,age) values(?,?,?,?);";//暂时不赋值,用问号代替
  $stmt=$mysqli->prepare($sql) or die($mysqli->error);

  /********************************可重复执行时需要的代码start*********************************/
  #3、绑定参数
  $name=‘小明5‘;
  $password=‘34f‘;
  $email=‘[email protected]‘;
  $age=‘1‘;

  #4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b
  $stmt->bind_param("sssi",$name,$password,$email,$age);

  #5、执行代码(返回布尔类型)
  $flag=$stmt->execute();

 /********************************可重复执行时需要的代码 end************************************/

  #6、结果以及释放

  if(!$flag)
  {
      die("操作失败".$stmt->error);
  }
  else
  {
      echo "操作成功!";
  }

  $mysqli->close();

?>

7.2 预编译查询多个数据

<?php

  //mysqli 预编译演示

  #1、创建mysqli对象
  $mysqli=new MySQLi("127.0.0.1","root","daomul","test");
  if(!$mysqli)
  {
       die("数据库连接失败!".$mysqli->connect_error);
  }

   /********************************可重复执行时需要的代码 start*******************************/

  #2、创建预编译对象
  $sql="select id,name,email from user1 where id>?;";//id,name,email和后面的结果集bind_result()对应
  $stmt=$mysqli->prepare($sql) or die($mysqli->error);

  #3、绑定参数
  $id=5;

  #4、参数赋值(第一个参数指代参数的类型缩写,string-s,int-i,double-d,bool-b
  $stmt->bind_param("i",$id);//绑定参数
  $stmt->bind_result($id,$name,$email);//绑定结果集

  #5、执行代码(返回布尔类型)
  $stmt->execute();

  #6、取出结果集显示
  while($stmt->fetch())
  {
      echo "<br/>$id--$name--$email";
  }

  /********************************可重复执行时需要的代码 end*******************************/

  #7、结果以及释放

  //释放结果
  $stmt->free_result();
  //关闭预编译语句
  $stmt->close();
  //关闭数据库连接
  $mysqli->close();

?>

8、其他函数

(1  获取行数和列数  num_rows   field_count

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

              $result=$mysqli->query();

              $result->fetch_field();

    (3 取出数据

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

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

原文地址:https://www.cnblogs.com/oymo/p/12163174.html

时间: 2024-10-10 01:59:39

PHP mysql 扩展库 操作mysql数据库步骤的相关文章

php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库

1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo   mysql扩展库与mysql数据库区别 ? php设计者封装了一些方法去操作mysql数据库,这些方法集中起来形成了mysql扩展库.mysql数据库存放数据.     2.使用php的MySQL扩展库操作MySQL数据库案例: (1)环境搭建:启用MySQL数据库,在php.ini文件中配置使用MySQL数据库,          

mysqli扩展库操作mysql数据库

配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 1 <?php 2 //mysqli扩展库操作mysql数据库,面向对象 3 $mysqli=new MySQLi("localhost","root","root","test"); 4 if($mysqli->connect_

边记边学PHP-(十六)PHP使用MySQL扩展库操作数据库

PHP提供了很多扩展库,这里说的是使用MySQL扩展库,但是这种扩展库在不久的将来就会被摒弃,因为如果使用MySQL扩展库编写的代码在运行的时候会有warning的提示.我本来想直接写另一种,但是感觉这是基础.MySQL扩展库,一说到库,自然而然就想到是一堆函数,很多函数组成一个库,使用扩展库也就是使用里面的函数.MySQL扩展库是完全面向过程的,显然不符合面向对象的特性,被摒弃也是可以理解的.废话不多说,直接上重点. 一.PHP使用MySQL扩展库操作数据库的示意图 此图是我自己画的,可能有不

在线小词典(mysql扩展库操作)

输入英文查询中文 1.建表 create table words( id int primary key auto_increment, enWords varchar(32) not null, chWords varchar(256) not null); 2.插入数据 insert into words (enWords,chWords) values ('I','我');insert into words (enWords,chWords) values ('you','你');inse

php数据库编程---mysql扩展库

1, Java有一种方式操作数据库, PHP有三种方式来操作mysql数据库.(1)mysql扩展库:(2)mysqli扩展库:(3)pdo: 2, mysql扩展库和mysql数据库区别 3, mysql数据库的三层结构示意图 4, mysql扩展库是一堆函数,是PHP设计者提供给程序员用于完成对mysql数据库的各种操作(CRUD).使用php的mysql扩展库完成对mysql操作的案例:编写一个程序,这个程序从user1表中读取数据,并打印在网页中. (1)环境搭建 ①启用mysql扩展库

边记边学PHP-(十七)PHP使用MySQLi扩展库操作数据库1

上一篇写了使用MySQL扩展库操作数据库,但是MySQL扩展库是完全面向过程的库,与现在逐渐走上舞台的面向对象思想有点差别.那么MySQLi扩展库就很好的解决了这个问题. 一.MySQLi扩展库是什么 mysqli(mysql improve)是mysql扩展库的增强版. mysql扩展库 和mysqli扩展库的比较: 1.mysqli的稳定性.安全性和效率有所提高 2.mysqli支持面向对象编程,以前的mysql是面向过程的.同时mysqli扩展库考虑到PHP老程序员,也提供了面向过程的风格

【小结】有关mysql扩展库和mysqli扩展库的crud操作封装

现阶段php如果要操作mysql数据库 php给我们提供了3套库 1.mysql扩展库   面向过程操作 2.mysqli扩展库  面向对象操作和面向过程操作并存  安全性和效率高于mysql扩展库 3.PDO扩展库    面向对象操作 今天这篇博文主要要谈谈mysql扩展库和mysqli扩展库 主要是记录了着2套crud操作分装 以下代码段是关于mysqli扩展库关于crud操作的封装 header("Content-type:text/html;charset=utf-8"); c

边记边学PHP-(十七)PHP使用MySQLi扩展库操作数据库2

从前天开始,我的电脑不知道怎么了,写程序的时候无缘无故就死机.还不是彻底死,鼠标还能动,就是点击不好使,也打不开任务管理器.昨晚检查一下硬盘,有六个坏道,也不知道是不是这个原因.但是我在玩的时候,只要不打开编译器写程序,啥事也没有.玩游戏也不回出现那种情况.把我搞得好烦. 四.Mysqli扩展库增强 MySQLi扩展库在基础操作上看着没什么不同,只是从面面向过程转换成了面向对象.但是既然是mysql扩展库的增强,那一定有强的地方.有如下代码: 1.批量执行sql语句 <?php //mysqli

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper 参考示例代码,如下所示: /// <summary> /// MySql 数据库操作类 /// </summary> public class MySqlHelper { #region MysqlConnection private static MySql.Data.MySqlClient.MySqlConnection _mysqlConnection; /// <su