Blogger Information
Blog 22
fans 0
comment 0
visits 14814
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
MYSQLI面向对象的补充知识,利用PDO对数据库进行连接与操作的知识,PDO的优势和获取结果集记录数量的正确方式。2018-9-2 20:06
朝闻道的博客
Original
758 people have browsed it

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

运行实例 »

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

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

运行实例 »

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

PDO新增数据代码实例演示如下:

实例

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

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

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

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

//绑定参数
$data = ['name'=>'钱学森','email'=>'qxs@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;

运行实例 »

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

PDO更新数据代码实例演示如下:

实例

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

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

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

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


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


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

运行实例 »

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

PDO删除数据代码实例演示如下:

实例

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

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

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

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


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

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

运行实例 »

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

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

// 一次性取出
//$rows = $stmt->fetchAll();
//foreach ($rows as $row) {
//    echo 'name: ',$row['name'],',   email: ',$row['email'],'<br>';
//}

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo var_export($row),'<br>';
}
$stmt = null;
// 关闭连接
$pdo = null;

运行实例 »

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

实例

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

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

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

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

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

//获取一行一列,无法获取同一行其它列
//echo $stmt->fetchColumn(0),'<br>';
//指针自动下移,获取二行2列
//echo $stmt->fetchColumn(1),'<br>';

$stmt = $pdo->prepare("select * from staff where salary > :salary");
$stmt->execute(['salary'=>6000]);
// 结果看上去是正确的,但是是有问题的,不要这样做
echo '工资大于6000的人数: '. $stmt->rowCount();

echo '<hr>';

$stmt = $pdo->prepare("select count(*) from staff where salary > :salary");
$stmt->execute(['salary'=>6000]);
echo '工资大于6000的人数: '. $stmt->fetchColumn();
$stmt = null;
// 关闭连接
$pdo = null;

运行实例 »

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

问答题和课堂总结的手写照片如下:

IMG_20180902_220304.jpg

Correction status:Uncorrected

Teacher's comments:
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