博客列表 >MySQLi面向对象中的查询操作,PDO 的优势和获取结果集记录数量的正确方式,PDO进行数据的增删改查操作-2018年8月31日14时5分

MySQLi面向对象中的查询操作,PDO 的优势和获取结果集记录数量的正确方式,PDO进行数据的增删改查操作-2018年8月31日14时5分

新竹网络_Terry的博客
新竹网络_Terry的博客原创
2018年08月31日 15:35:461290浏览

今天学习了MySQLi面向对象中如何使用数据的增删改查操作;什么是PDO,PDO又有哪些优势,PDO如何进行数据的增删改查操作,通过哪些方法能够获取结果集的记录数量?

代码:

实例

<?php
/**
 *MySqli查询操作
 */
//连接数据库
require 'index.php';
//准备SQL语句
$sql = "SELECT `id`,`name`,`password`  FROM `user` WHERE `id` > ? ;";
// 创建预处理对象
$stmt = $mysqli->stmt_init();
if ($stmt->prepare($sql)) {
    //绑定参数
    $stmt->bind_param('i', $id);
    //设置参数
    $id = 10;
    if ($stmt->execute()) {
        //获取结果集并放到缓存区
        $stmt->store_result();
        //将结果集中的列绑定到变量上
        $stmt->bind_result($id,$name, $password);
        //结果集是否不为,只有不为空的时候才遍历
        if ($stmt->num_rows > 0) {
            // 循环遍历结果集
            // fetch()每次获取一条记录,并将指针自动下移
            while ($stmt->fetch()) {
                echo '<p>id:'.$id.'<br>用户名:' .$name.'<br>密码:'.$password.'</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();

运行实例 »

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

浏览图:

图片1.png

代码:

 

实例

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

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

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

$pdo = null;
// 关闭连接
unset($pdo);

运行实例 »

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

浏览图:

图片2.png

代码:

实例

<?php
//PDO新增数据
//1.连接数据
$pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456');
$sql="INSERT `user` SET `name`= :name,`password`= sha1(:password) ";

//2.创建预处理对象
$stmt=$pdo->prepare($sql);
//3.执行添加
$stmt->execute(['name'=>'huang','password'=>'6666']);
$stmt->execute(['name'=>'hao','password'=>'6666']);
$stmt->execute(['name'=>'ling','password'=>'6666']);
$stmt->execute(['name'=>'ke','password'=>'6666']);

echo '成功添加了'.$stmt->rowCount().'条用户';

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

运行实例 »

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

浏览图:

图片3.png

图片4.png

代码:

 

实例

<?php
/**
 * PDO更新操作
 */
//1.连接数据
$pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456');

$sql="UPDATE `user` SET `name`= :name WHERE id= :id";
//2.创建预处理对象
$stmt=$pdo->prepare($sql);
//执行SQL语句
$stmt->execute(['name'=>'牛郎','id'=>7]);
echo '修改完成'.$stmt->rowCount().'条用户名';

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

运行实例 »

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

浏览图;

图片5.png

图片6.png

代码:

实例

<?php
/**
 * PDO删除操作
 */
//1.连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456');
//2.准备SQL语句
$sql="DELETE FROM `user` WHERE `id`= :id";
//3.创建预处理对象
$stmt=$pdo->prepare($sql);

//判断执行SQL语句
if($stmt->execute(['id'=>7])){
    echo '您已成功的删除了'.$stmt->rowCount().'个账号';
}else{
    echo '不成在';
    print_r($stmt->errorInfo());
    exit();
}


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

运行实例 »

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

浏览图:

图片7.png

图片8.png

代码:

实例

<?php
/**
 * PDO查询操作
 */
//连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456');
//准备SQL语句
$sql="SELECT `name` FROM `user` WHERE `id`=:id ";
//创建预处理对象
$temt=$pdo->prepare($sql);
//执行查询
$temt->execute(['id'=>10]);
//将结果集中的列绑定到变量上
$temt->bindColumn('name',$name);

while ($temt->fetch(PDO::FETCH_BOUND)){
    echo '您查询的用户名为'.$name.'<br>';
}
$stmt=null;
//关闭连接
$pdo= null;

运行实例 »

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

浏览图:

图片9.png

图片10.png

PDO的优势:

PDO是PHP数据对象(PHP Date Object)的缩写,是PHP操作所有数据库的抽象层,提供了一个统一的访问接口;

1:PDO可以使用相同的SQL语句执行不同的数据库,而MySqli只能执行MySql一种数据库。

2:PDO支持更高级的DB特性操作

3:PDO是PHP官方的PECL库,兼容性稳定性高

4:PDO可以防止SQL注入,确保数据库更加安全

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

获取结果集有三种方法,分为fetch() tchColumn() fetchAll()

fetch()方法

fetch()方法用于获取结果集的下一行

在PDO中通过预处理语句prepare()和execute()执行SQL查询语句,并且应用while()语句和fetch()方法完成数据的循环输出

fetchAll()方法

fetchAll()方法是为了获取结果集的所有行,其返回值是一个包含结果集中所有数据的二进制数组

fetchColumn()方法

fetchColumn()方法获取结果集中下一行指定列的值

通过fetchColumn()方法获取结果集中下一行中指定列的值。(或第一列id的值)

总结:

  1. 熟悉了如何使用MySqli对数据进行增删查改;

  2. 熟悉了使用PDO对数据进行增删查改;

  3. 准备好SQL语句后,需先创建预处理对象prepare(),然后才能执行SQL语句execute();

  4. PDO比MySqli更加简洁,更加具有安全性,其兼容稳定性更高;

  5. 在结束流程后进行注销其预处理对象,关闭数据库连接,;






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