博客列表 >Mysqli与PDO操作数据库(0830)

Mysqli与PDO操作数据库(0830)

Ray的博客
Ray的博客原创
2018年09月04日 23:52:23726浏览

1)编程:MySQLi面向对象中的查询操作

实例

<?php
/**
 * 预处理查询操作
 */

//连接数据库
require 'demo1.php';

//准备SQL语句
$sql = "SELECT `staff_id`,`name`,`salary`  FROM `staff` WHERE `salary` < ? ;";

// 创建预处理对象
$stmt = $mysqli->stmt_init();

if ($stmt->prepare($sql)) {
    //绑定参数
    $stmt->bind_param('i', $salary);

    //设置参数
    $salary = 4000;

    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();

运行实例 »

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

运行效果图:

hm-1.png

2)问答: PDO 的优势

答:用PDO的好处是,PDO支持多种数据库,而MySQLi只支持MySQL,一但你掌握了就你可以随心所欲的使用连接多种数据库。

3)编程:PDO 连接数据库

实例

<?php
/**
 * PDO PHP数据对象,是PHP操作所有数据库的抽象层,提供了一个统一的访问接口
 */

// 数据源:设置数据库的类型,以及数据库服务器和默认的数据库
$dsn = 'mysql:host=127.0.0.1; dbname=php';
//用户名
$user = 'root';
//密码
$pass = 'root';
//实例化PDO类,创建pdo对象,并完成了数据库的连接
try {

    $pdo = new PDO($dsn, $user, $pass);
    echo '<h2>连接成功</h2>';

} catch (PDOException $e) {
    die('Connect ERROR! :'. $e->getMessage());
}

// 关闭连接
$pdo = null;

unset($pdo);

运行实例 »

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

运行效果图:

hm2-1.png

4)编程:PDO新增数据

实例

<?php
/**
 * 新增记录
 */

//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

//准备SQL语句,占位符我们不再用?,用"命名占位符"
$sql = "INSERT `user` SET `user_name`= :name , `email`= :email, `password`= sha1(:password)";

//创建预处理对象
$stmt = $pdo->prepare($sql);

//绑定参数
$data = ['name'=>'关羽','email'=>'gy@php.cn','password'=>'123'];
$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();
}

$stmt = null;
// 关闭连接
$pdo = null;

运行实例 »

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

运行效果图:

hm2-2.png

5)编程: PDO更新数据

实例

<?php
/**
 * 更新记录
 */

//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

//准备SQL语句,占位符我们不再用?,用"命名占位符"
$sql = "UPDATE `user` SET `email`= :email WHERE `user_id`= :id";

//创建预处理对象
$stmt = $pdo->prepare($sql);


$stmt->execute(['email'=>'yzf@qq.com','id'=>10]);
    echo '<h3>成功更新了'.$stmt->rowCount().'条记录</h3>';


$stmt = null;
// 关闭连接
$pdo = null;

运行实例 »

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

运行效果图:

hm2-3.png

6)编程: PDO 删除数据

实例

<?php
/**
 * 删除记录
 */

//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

//准备SQL语句,占位符我们不再用?,用"命名占位符"
$sql = "DELETE FROM `user` WHERE `user_id`= :id";

//创建预处理对象
$stmt = $pdo->prepare($sql);


if ($stmt->execute(['id'=>10])) {
    // rowCount(): 返回受影响的记录数量
    echo '<h3>成功删除了'.$stmt->rowCount().'条记录</h3>';
} else {
    echo '<h3>无删除</h3>';
    print_r($stmt->errorInfo());
    exit();
}

$stmt = null;
// 关闭连接
$pdo = null;

运行实例 »

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

运行效果图:

hm2-4.png

7)编程:PDO查询数据

实例

<?php
/**
 * PDO 预处理查询
 */

//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

//准备SQL语句,占位符我们不再用?,用"命名占位符"
$sql = "SELECT `user_name`,`email`  FROM `user` WHERE `user_id` < :id";

//创建预处理对象
$stmt = $pdo->prepare($sql);

//执行查询
$stmt->execute(['id'=>5]);

//将结果集中的列绑定到变量上
$stmt->bindColumn('user_name', $name);
$stmt->bindColumn('email', $email);

//用列变量来遍历结果集
while ($stmt->fetch(PDO::FETCH_BOUND)) {
    echo '姓名: '.$name.',  邮箱: '.$email.'<br>';
}

$stmt = null;
// 关闭连接
$pdo = null;

运行实例 »

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

运行效果图:

hm2-5.png

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

答:设一个计数器,每次操作一次数据库都统计一次。

总结:PDO的好处是对与编程者来说实际使用的数据库是透明的,便于移植代码,虽然这样的事情不是经常发生。



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