博客列表 >mysqli增改删查与PDO增改删查—2018年08月30日22时00分

mysqli增改删查与PDO增改删查—2018年08月30日22时00分

小星的博客
小星的博客原创
2018年09月05日 10:08:15956浏览

今天是第十五天上课,朱老师先是讲了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(*)来获取记录数

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议