Blogger Information
Blog 34
fans 0
comment 0
visits 32347
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQLi面向对象中的查询操作+PDO 的优势+PDO 连接数据库+PDO增删改查+获取结果集记录数量的正确方式
Belifforz的博客
Original
1028 people have browsed it
  1. MySQLi面向对象中的查询操作

  2. 实例

    <?php
    /**
     * 预处理查询操作
     */
    
    //连接数据库
    require 'demo1.php';
    
    //准备SQL语句
    $sql = "SELECT `id`,`name`,`salary` FROM `staff` WHERE `salary` > ?;";
    
    //创建预处理对象
    $stmt -> $mysqli->stmt_init();
    
    //
    if($stmt->prepare($sql)){
        //绑定参数
        $stmt->bind_param('i',$salary);
    
        //设置参数
        $salary = 6000;
        if($stmt->execute()){
            //获取结果集并放到缓存区
            $stmt->store_result();
    
            //结果集中的列绑定到变量
            $stmt->bind_result($id,$name,$salary);
    
            //结果集是否为空,不为空才遍历
            if($stmt->num_rows> 0){
                //循环遍历结果集
                //fetch()每次获取一条记录,并将指针自动下移
                while($stmt->fetch()){
                    echo '<p>id:'.$id.'---姓名:'.$name.'---工资:'.$salary.'</p>';
                }
            }else{
                exit("<p>当前表中没有数据</p>");
            }
            $stmt->free_result();
    
    
        }else{
            //返回执行阶段的出错信息
            exit($stmt->errno.":".$stmt->error);
        }
    }else{
        //返回sql语句检测阶段的出错信息
        exit($stmt->errno.":".$stmt->error);
    }
    //注销stmt对象
    $stmt->close();
    //关闭连接
    $mysqli->close();

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

    ---------------------------------------

  3. 2.PDO 的优势

      实例

      PDO真正的以底层实现的统一接口数库操作接口,不管后端使用的是何种数据库,
      如果代码封装好了以后,应用层调用基本上差不多的,
      当后端数据库更换了以后,应用层代码基本不用修改.
      PDO可以防止SQL注入,确保数据库更加安全

      运行实例 »

      点击 "运行实例" 按钮查看在线实例

      3连接数据库

      实例

      <?php
      /**
       * 新增记录
       */
      
      //连接数据库
      
      $pdo = NEW PDO('mysql:host=127.0.0.1;dbname=php','root','root');
      
      //准备SQL语句,占位符不用?  用'命名占位符'
      $sql = "INSERT `user` SET `name` =:name , `email` = :email , `password` = sha1(:password)";
      
      //创建预处理对象
      $stmt = $pdo->prepare($sql);
      
      //绑定参数
      
      $data = ['name' => '张三', 'email' => 'zhangsam@qq.com' ,'password' => '123456'];
      $stmt -> bindParam('name',$data['name'],PDO::PARAM_STR);
      $stmt -> bindParam('email',$data['email'],PDO::PARAM_STR);
      $stmt -> bindParam('password',$data['password'],PDO::PARAM_STR);
      
      if($stmt->execute()){
          //rowCount():返回受影响的记录数量
          echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>';
      }else{
          echo '<h3>添加失败</h3>';
          print_r($stmt->errorInfo());//返回打印出错误信息
          exit();
      }
      //关闭连接
      $pdo=null;

      运行实例 »

      点击 "运行实例" 按钮查看在线实例

      4.新增数据

      实例

      <?php
      /**
       * 新增记录
       */
      
      //1连接数据库
      
      $pdo = NEW PDO('mysql:host=127.0.0.1;dbname=php','root','root');
      /*
      //2准备SQL语句,占位符不用?  用'命名占位符'
      $sql = "INSERT `user` SET `name` =:name , `email` = :email , `password` = sha1(:password)";
      
      //3创建预处理对象
      $stmt = $pdo->prepare($sql);
      
      //4设置参数
      
      $data = ['name' => '王五', 'email' => 'wangwu@qq.com' ,'password' => '12345678'];
      
      //5执行参数
      $stmt->execute($data);
      */
      
      //另一种写法 直接执行添加
      $stmt = $pdo->prepare("INSERT `user` SET `name` =:name , `email` = :email , `password` = sha1(:password)");
      
      $stmt->execute(['name' => '王五', 'email' => 'wangwu@qq.com' ,'password' => '12345678']);
      echo '<h3>成功添加了'.$stmt->rowCount().'条记录</h3>';
      
      //    echo '<h3>添加失败</h3>';
      //    print_r($stmt->errorInfo());//返回打印出错误信息
      //    exit();
      
      //关闭连接
      $pdo=null;

      运行实例 »

      点击 "运行实例" 按钮查看在线实例

      5.更新数据

      实例

      <?php
      /**
       * 更新记录
       */
      
      //连接数据库
      
      $pdo = NEW PDO('mysql:host=127.0.0.1;dbname=php','root','root');
      
      //准备SQL语句,占位符不用?  用'命名占位符'
      $sql = "UPDATE `user` SET `email` =:email WHERE `id`=:id";
      
      //创建预处理对象
      $stmt = $pdo->prepare($sql);
      
      //执行查询
      if($stmt->execute(['email' => 'lisi@163.com','id' => 4])){
          //rowCount():返回受影响的记录数量
          echo '<h3>成功更新了'.$stmt->rowCount().'条记录</h3>';
      }else{
          echo '<h3>更新失败</h3>';
          print_r($stmt->errorInfo());//返回打印出错误信息
          exit();
      }
      //关闭连接
      $pdo=null;

      运行实例 »

      点击 "运行实例" 按钮查看在线实例

      6.删除数据

      实例

      <?php
      /**
       * 删除记录
       */
      
      //连接数据库
      
      $pdo = NEW PDO('mysql:host=127.0.0.1;dbname=php','root','root');
      
      //准备SQL语句,占位符不用?  用'命名占位符'
      $sql = "DELETE FROM `user` WHERE `id`=:id";
      
      //创建预处理对象
      $stmt = $pdo->prepare($sql);
      
      //执行查询
      if($stmt->execute(['id' => 3])){
          //rowCount():返回受影响的记录数量
          echo '<h3>成功删除了'.$stmt->rowCount().'条记录</h3>';
      }else{
          echo '<h3>删除失败</h3>';
          print_r($stmt->errorInfo());//返回打印出错误信息
          exit();
      }
      //关闭连接
      $pdo=null;

      运行实例 »

      点击 "运行实例" 按钮查看在线实例

      7.删除数据

      实例

      <?php
      /**
       * 查询记录
       */
      
      //连接数据库
      
      $pdo = NEW PDO('mysql:host=127.0.0.1;dbname=php','root','root');
      
      //准备SQL语句,占位符不用?  用'命名占位符'
      $sql = "SELECT `name`,`email` FROM `user` WHERE `id` > :id";
      
      //创建预处理对象
      $stmt = $pdo->prepare($sql);
      var_dump($stmt);
      //执行查询
      $stmt->execute(['id' => 1]);
      
      //一次性取出---问题:如果一次性取出太多,内存会爆,不建议使用,除非是少量数据
      //$rows = $stmt->fecthAll();
      //foreach($rows as $value ){
      //    echo 'name:',$rows['name'],',email:',$rows['email'],'<br>';
      //}
      
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
          echo var_export($row),'<br>';
      }
      
      //关闭连接
      $pdo=null;

      运行实例 »

      点击 "运行实例" 按钮查看在线实例

      8 获取结果集记录数量的正确方式是什么?


      用COUNT(*)获取结果集,用$PDO->fetchColumn()取出结果集记录数量


    Correction status:qualified

    Teacher's comments:
    Statement of this Website
    The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
    All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
    0 comments