博主信息
博文 34
粉丝 0
评论 1
访问量 29436
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
0830作业:MySQL面向对象及PDO的操作
Samoye
原创
841人浏览过

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

实例

<?php
/**
 * Created by PhpStorm.
 * User: Core
 * Date: 2018/9/2
 * Time: 18:18
 */
// 查询操作
require 'connect.php';

//准备一套SQL语句
// $sql = "select `name`,`sex`,`class` from `student` where `id`< ? ";
$sql = "select `name`,`sex`,`class` from `student` where `bursary`> ? ";

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

if($stmt->prepare($sql)){ //判断一下预处理语句成功了没
    //成功了,就开始绑定参数
    $stmt->bind_param('i',$bursary);
    //给参数赋值
    $bursary = 1000;
    if($stmt->execute()){
        //执行成功,下一步
        $stmt->store_result();//将结果放到结果集里
        $stmt->bind_result($name,$sex,$class); //将结果集绑定到变量上

        //判断以下结果集是否为空,空是不能变量的
        if($stmt->num_rows > 0){
            //不为空则遍历输出
            while($stmt->fetch()){ //取出每条数据,并下移
                echo $name.'--'.$sex.'--'.$class.'<br>';
            }
        }else{
            //为空则提示空
            echo 'result is null';
        }

    }else{
        exit($stmt->errno.':'.$stmt->error);
    }

}else{
    exit($stmt->errno.':'.$stmt->error);
}


//注销stmt对象
$stmt->close();

//关闭连接
$mysqli->close();

运行实例 »

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

本地运行截图:

select.png

作业2:问答: PDO 的优势

  1. 代码量减少

  2. 安全

作业3: 编程:PDO 连接数据库

实例

<?php
/**
 PDO:php data object
 *
 */
$dsn = 'mysql:host=localhost; dbname=stu'; //数据源:主机IP/名字;默认数据库
$user = 'root';
$pwd = 'root';
try {
    $pdo = new PDO($dsn,$user,$pwd);
    echo 'connect success!!!';
} catch (PDOException $e){
    die('error!:'.$e->getMessage());
}

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

//unset($pdo);

运行实例 »

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

作业4:编程:PDO新增数据

实例

<?php
/**
pdo 插入数据
 */
/*//require 'pdo.php';
//pdo方式连接数据库
$pdo = new PDO('mysql:host=localhost;dbname=stu','root','root');
//准备SQL预处理语句
$sql = "insert into `student` set `name`= :name,`sex`= :sex,`class`= :class,`bursary`= :bursary";
//创建预处理对象
$stmt = $pdo->prepare($sql);

//绑定参数
//用数组存储数据:
$data = ['name'=>'tom','sex'=>'male','class'=>'1A','bursary'=>900];
$stmt->bindParam(':name',$data['name'],PDO::PARAM_STR); //:name 和data['name']对应,最后是参数类型
$stmt->bindParam(':sex',$data['sex'],PDO::PARAM_STR);
$stmt->bindParam(':class',$data['class'],PDO::PARAM_STR);
$stmt->bindParam(':bursary',$data['bursary'],PDO::PARAM_STR);

if ($stmt->execute()){
    echo 'add'.$stmt->rowCount().'item';
}else{
    echo ' fail to add !';
    print_r($stmt->errorInfo());//打印错误信息
    exit(); //
}

$stmt = null;
$pdo = null;*/

//最简单的方式:

//连接数据库
$pdo = new PDO('mysql:host=localhost;dbname=stu','root','root');
//创建预处理
$stmt = $pdo->prepare("insert into `student` set `name`= :name,`sex`= :sex,`class`= :class,`bursary`= :bursary");
//执行添加数据
$stmt->execute(['name'=>'andy1','sex'=>'female','class'=>'3A','bursary'=>1200]);
echo 'success add '.$stmt->rowCount().' items';

运行实例 »

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

作业5:编程: PDO更新数据

实例

<?php
/**
pdo 更新操作
 */
$pdo = new PDO('mysql:host=localhost;dbname=stu','root','root');
$sql = "update `student` set `bursary`= :bursary +100 where `name`= :name ";
$stmt = $pdo->prepare($sql);
$stmt->execute(['bursary'=>1900,'name'=>'andy']);
echo 'success '.$stmt->rowCount().' item';

$stmt = null;
$pdo = null;

运行实例 »

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

作业6:编程: PDO 删除数据

实例

<?php
/**
pdo 删除
 */
//连接数据库
$pdo = new PDO('mysql:host=localhost;dbname=stu','root','root');
// 创建SQL
$sql = "delete from student where `id`> :id";
//预处理语句
$stmt = $pdo->prepare($sql);
$stmt->execute(['id'=>120]);
echo 'delete success '.$stmt->rowCount().' items';

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

运行实例 »

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

作业7:编程:PDO查询数据

实例

<?php
/**
pdo 查询
 */
// 连接数据库
$pdo = new PDO('mysql:host=localhost;dbname=stu','root','root');
//创建SQL语句
$sql = "select `name`,`sex`,`class` from `student` where `bursary`> :bursary";
// 预处理语句
$stmt = $pdo->prepare($sql);
//执行查询语句
$stmt->execute(['bursary'=>1000]);

/*//一次性取出方法 ,数据大的时候,爆内存,不建议使用
$item = $stmt->fetchAll();
foreach ($item as $value) {
    echo 'name:',$value['name'],'--'.$value['sex'],'--',$value['class'],'<br>';
}*/

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { //PDO::FETCH_ASSOC 只取关联部分。
    echo var_export($row), '<br>';
}



$stmt = null;
$pdo = null;

运行实例 »

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

作业8;问答: 获取结果集记录数量的正确方式是什么?

* select rowcount 只是对delete,update,insert 等对数据表有写入操作的语句,返回受影响的行数,而对查询select 返回的数据
* 有的时候并不准确,我们需要通过,select count(*) 统计以下记录数,然后通过fetchColumn()来获得字段列的值。

批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学