博主信息
博文 37
粉丝 0
评论 0
访问量 39328
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
MySQLi面向对象中的查询操作,PDO 的优势和获取结果集记录数量的正确方式,PDO进行数据的增删改查操作-2018年8月31日14时5分
新竹网络_Terry的博客
原创
1562人浏览过

今天学习了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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学