登录  /  注册
博主信息
博文 39
粉丝 2
评论 2
访问量 49496
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Mysqli与pdo操作数据库-2018年8月30号
fighting的博客
原创
702人浏览过

                                                                    Mysqli与pdo操作数据库

                                              时间:2018年8月30号                天气:多云

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

实例

<?php
/**
 * 预处理查询
 */
require 'demo1.php';
$sql = 'SELECT * FROM `staff` WHERE `salary`>?;';
//创建预处理对象
$stmt = $conn->stmt_init();
//检测预处理·对象是否创建成功
if ($stmt->prepare($sql)){
    //参数·绑定
    $salary = 5000;
    $stmt->bind_param('i',$salary);
    //执行语句
    if ($stmt->execute()){
       //把执行结果放在缓冲区
        $stmt->store_result();
        //把结果集的列绑定到对象上区
        $stmt->bind_result($id,$name,$sex,$age,$salary);
        if ($stmt->num_rows>0) {
            while ($stmt->fetch()) {
                echo '<p>id:' . $id . '---姓名:' . $name . '---性别:' . $sex . '---年龄:' . $age . '---工资:' . $salary . '</p>';
            }
        }else{
                exit('<p>无数据显示</p>');

            }
            $stmt->free_result();
    }else{
        //执行阶段错误
        exit($stmt->errno.':'.$stmt->error);
    }
}else{
    //检测阶段错误
    exit($stmt->errno.':'.$stmt->error);
}
//释放语句,关闭连接
$stmt->close();
$conn->close();

运行实例 »

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

本机运行图

1.png

2. 问答: PDO 的优势

答:

(1) PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。

(2)PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。

3. 编程:PDO 连接数据库

实例

<?php
/**
 * pdo方法连接数据库(php,date,object)
 */
header('Content-type:text/html;charset=utf-8');
$dsn = 'mysql:127.0.0.1; dbname=php';
$user = 'root';
$psw = 'root';
try{
    $sql = new PDO($dsn,$user,$psw);
    echo '恭喜你,连接成功!!!';
}catch (PDOException $e){
    echo 'connect error:'.$e->getMessage();

}

运行实例 »

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

本机运行图片:

1.png

4. 编程:PDO新增数据

实例

<?php
/**
 * pdo的增删查改
 */
header('Content-type:text/html;charset=utf-8');
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

//$pdo = new PDO('mysql:127.0.0.1; dbname=php','root','root');

$sql = 'INSERT INTO `user` SET `name`=:name, `email`= :email, `password`= sha1(:password);';

$stmt= $pdo ->prepare($sql);

$date =['name'=>'科比','email'=>'kobe@qq.com','password'=>'123'];

$stmt->bindParam('name',$date['name'],PDO::PARAM_STR);
$stmt->bindParam('email',$date['email'],PDO::PARAM_STR);
$stmt->bindParam('password',$date['password'],PDO::PARAM_STR);

if ($stmt->execute()){
    if ($stmt->rowCount()>0){
        echo '成功的添加了'.$stmt->rowCount().'条数据';
    }
}else{
    echo '添加失败:';
    print_r($stmt->errorInfo());
    exit();
}

$stmt=null;
 $pdo=null;

运行实例 »

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

本机运行图片:

1.png

5.编程: PDO更新数据

实例

<?php
/**
 * update
 */
header('Content-type:text/html; charset=utf-8');

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

$sql = 'UPDATE `user`SET `name`=:name WHERE `id`=:id';

$stmt = $pdo->prepare($sql);

//$name='老流氓';
//$id =3;
$stmt->execute(['name'=>'老流氓','id'=>3]);
echo '成功的更新了一条记录!!!';

运行实例 »

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

本机运行图片:

1.png

6. 编程: PDO 删除数据

实例

<?php
/**
 * pdo,delete
 */
header('Content-type:text/html;charset=utf-8');

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

$sql ='DELETE FROM `user` where `id`=:id;';

$stmt = $pdo->prepare($sql);

$stmt->execute(['id'=>3]);
echo '成功的删除了一条记录';

运行实例 »

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


本机运行图片

1.png

7. 编程:PDO查询数据

实例

<?php
/**
 * pdo的预处理查询
 */
header('Content-type:text/html;charset=utf-8');

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

$sql = 'SELECT * FROM `staff` WHERE `salary`>:salary;';

$stmt = $pdo->prepare($sql);

$stmt->execute(['salary'=>5000]);

while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    //echo'<pre>'.var_export($row,true);
    echo var_export($row).'<hr>';

}

运行实例 »

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

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

     对于大多数数据库,PDOStatement::rowCount() 不能返回受一条 SELECT 语句影响的行数。替代的方法是,使用 PDO::query() 来发出一条和原打算中的SELECT语句有相同条件表达式的 SELECT COUNT(*) 语句,然后用 PDOStatement::fetchColumn() 来取得返回的行数。这样应用程序才能正确执行。








批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

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