博客列表 >0830作业:MySQL面向对象及PDO的操作

0830作业:MySQL面向对象及PDO的操作

Samoye
Samoye原创
2018年09月02日 23:47:01658浏览

作业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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议