Blogger Information
Blog 48
fans 0
comment 0
visits 40781
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysqli增改删查与PDO增改删查—2018年08月30日22时00分
小星的博客
Original
965 people have browsed it

今天是第十五天上课,朱老师先是讲了mysqli的数据库操作,继而讲了更高级的PDO数据库操作。

  1. mysqli的查询操作。

    代码:

    实例

    <?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 = 5000;
        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();

    运行实例 »

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

  2. PDO的优势:PDO(PHP Data Object)提供了一个数据访问抽象层,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据,就是说PDO提供了一个统一的数据访问接口。

  3. PDO的连接数据库,可以看出PDO的连接数据库操作是十分精简的。

    代码:

    实例

    <?php
    header('Content-type:text/html;charset=utf-8');
    
    //数据源,数据库类型,数据库服务器以及默认的数据库
    $dsn = 'mysql:host = 127.0.0.1; dbname = php';
    $user = 'root';
    $pass = 'root';
    
    try{
        $pdo = new PDO($dsn, $user, $pass);
    //    $pdo = new PDO('mysql:host=127.0.0.1;dbname = php','root','root');
        echo '连接成功';
    }catch(PDOException $e){
        die('连接错误'.$e->getMessage());
    
    }
    //关闭连接
    $pdo = null;

    运行实例 »

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

  4. PDO新增数据

    代码:

    实例

    <?php
    
    header('Content-type:text/html;charset=utf-8');
    /**
     * 新增数据
     */
    $pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
    
    $sql = "INSERT `user` SET `name`= :name, `email`= :email, `password`= sha1(:password)";
    
    $stmt = $pdo->prepare($sql);
    //$stmt = $pdo->prepare("INSERT `user` SET `name`= :name, `email`= :email, `password`= sha1(:password)");
    //$data = ['name'=>'zmx','email'=>'123@dd.com','password'=>'123456'];
    
    //$stmt->execute($data);
    $stmt->execute(['name'=>'zmx1','email'=>'123@dd.com','password'=>'123456']);
    $stmt->execute(['name'=>'zmx2','email'=>'123@dd.com','password'=>'123456']);
    $stmt->execute(['name'=>'zmx3','email'=>'123@dd.com','password'=>'123456']);
    $stmt->execute(['name'=>'zmx4','email'=>'123@dd.com','password'=>'123456']);
    
    $stmt = null;
    //unset($stmt);
    $pdo = null;

    运行实例 »

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

  5. PDO更新数据

    代码:

    实例

    <?php
    /**
     *更新
     */
    
    header('Content-type:text/html;charset=utf-8');
    
    $pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
    
    $sql = "UPDATE `user` SET `email`= :email WHERE `id` = :id";
    
    $stmt = $pdo->prepare($sql);
    
    if($stmt->execute(['email' => 'werdd@.cn', 'id' => 5])){
        echo '成功更新了'.$stmt->rowCount().'条记录';
    }else{
        print_r($stmt->errorInfo());
    }
    $stmt = null;
    //unset($stmt);
    $pdo = null;

    运行实例 »

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

  6. PDO删除数据

    代码:

    实例

    <?php
    /**
     *删除
     */
    
    header('Content-type:text/html;charset=utf-8');
    
    $pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
    
    $sql = "DELETE FROM `user` WHERE `id` = :id";
    
    $stmt = $pdo->prepare($sql);
    
    if($stmt->execute(['id' => 8])){
        echo '成功删除了'.$stmt->rowCount().'条记录';
    }else{
        print_r($stmt->errorInfo());
    }
    $stmt = null;
    //unset($stmt);
    $pdo = null;

    运行实例 »

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

  7. PDO查询数据

    代码:

    实例

    <?php
    /**
     * PDO 预处理查询
     */
    
    //连接数据库
    $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);
    
    //执行查询
    $stmt->execute(['id'=>5]);
    
    //将结果集中的列绑定到变量上
    $stmt->bindColumn('name', $name);
    $stmt->bindColumn('email', $email);
    
    //用列变量来遍历结果集
    while ($stmt->fetch(PDO::FETCH_BOUND)) {//FETCH_BOUND :设置一下当前模式为绑定模式,以防止意外,结果不受影响
        echo '姓名: ',$name, ',  邮箱: ', $email, '<br>';
    }
    
    $stmt = null;
    //unset($stmt);
    $pdo = null;

    运行实例 »

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


  8. 获取结果集记录数量时,查询获取的结果集无法得到准确的记录数的,rowCount()只能返回写操作(insert,update,delete)的受影响数,但select不是写操作一般用select count(*)来获取记录数

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