Blogger Information
Blog 37
fans 0
comment 0
visits 32082
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MySQLi面向对象中的查询操作,PDO 的优势和获取结果集记录数量的正确方式,PDO进行数据的增删改查操作-2018年8月31日14时5分
新竹网络_Terry的博客
Original
1298 people have browsed it

今天学习了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. 在结束流程后进行注销其预处理对象,关闭数据库连接,;






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