首页 > 编程语言 >php的pdo库使用总结

php的pdo库使用总结

时间:2022-12-06 16:13:23浏览次数:30  
标签:总结 PDO name age st pdo error php

<?php
try {
    $dsn = "mysql:host=127.0.0.1;port=3306;dbname=test;charset=utf8";
    $user = "root";
    $password = "";
    #持久连接
    $pdo = new PDO($dsn, $user, $password, [PDO::ATTR_PERSISTENT => true]);
    #设置获取值的方式
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    #设置报错模式,默认报错模式为silent模式:不会主动报错,还有警告模式:错误发生后通过php标准报告错误,异常模式:错误发生后抛出异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $error) {
    die('connect error');
}

try {
    #exec  
    $sql = 'insert into test(name,age) values ("lele",5),("lily",8)';
    $rows = $pdo->exec($sql);
    var_dump($rows);
    var_dump($pdo->lastInsertId());

    //query
    $sql = 'select * from test limit 5';
    $st = $pdo->query($sql);
    echo '<pre>';
    if ($st) {
        foreach ($st as $arr) {
            var_dump($arr);
        }
        // var_dump($st->fetchAll());
        var_dump($st->rowCount());
    }
} catch (Exception $error) {
    var_dump($error->getCode(), $error->getLine(), $error->getFile(), $error->getMessage());
}

#prepare预处理
try {
    $sql = 'insert into test(name,age) values (?,?)';
    $st = $pdo->prepare($sql);
    $st->bindValue(1, 'rose');
    $st->bindValue(2, 23);
    $st->execute();

    $sql = 'insert into test(name,age) values (:name,:age)';
    $st = $pdo->prepare($sql);
    #bindValue  把一个值绑定到一个参数  
    $name = 'cc';
    $age = 17;
    $st->bindValue(':name', $name, PDO::PARAM_STR);
    $st->bindValue(':age', $age, PDO::PARAM_INT);
    $st->execute();

    #bindParam 绑定一个参数到指定的变量名
    $st->bindParam(':name', $name, PDO::PARAM_STR);
    $st->bindParam(':age', $age, PDO::PARAM_INT);
    $name = 'aa';
    $age = 14;
    $st->execute();
    $name = 'bb';
    $age = 15;
    $st->execute();

    $st = $pdo->prepare('select * from test where name=:name');
    $st->bindValue(':name', 'lily', PDO::PARAM_STR);
    if ($st->execute()) {
        foreach ($st as $arr) {
            var_dump($arr);
        }
    }
} catch (Exception $error) {
    var_dump($error->getCode(), $error->getLine(), $error->getFile(), $error->getMessage());
}

#事务
try {
    $pdo->beginTransaction();
    $st = $pdo->prepare('insert into test(name,age) values (:name,:age)');
    $st->bindParam(':name', $name, PDO::PARAM_STR);
    $st->bindParam(':age', $age, PDO::PARAM_INT);

    $st_score = $pdo->prepare("insert into score(sid,score) values (:sid,:score)");
    $st_score->bindParam(':sid', $sid, PDO::PARAM_INT);
    $st_score->bindParam(':score', $score, PDO::PARAM_INT);

    $data = [
        ['name' => 'ee', 'age' => 24],
        ['name' => 'tt', 'age' => 23]
    ];
    $scores = [
        [89, 87, 67, 85],
        [78, 67, 59, 89]
    ];
    foreach ($data as $index => $item) {
        $name = $item['name'];
        $age = $item['age'];
        $st->execute();
        $sid = $pdo->lastInsertId();

        foreach ($scores[$index] as $val) {
            $score = $val;
            $st_score->execute();
        }
    }

    $pdo->commit();
} catch (Exception $error) {
    $pdo->rollBack();
    echo 'transaction failed';
}

$pdo = null;

 

标签:总结,PDO,name,age,st,pdo,error,php
From: https://www.cnblogs.com/caroline2016/p/16955589.html

相关文章

  • php中缩略图的问题
    以往在PHP中用缩略图上传,一直没留意到一个问题,就是:即使图片不大,比如不超过500K,但实际上在缩略图时,要占用很大的内存资源的,比如一张1600*1200*24B的图......
  • 第一次机房总结
    历时一个月的时间我的第一次机房终于搞定了,这次机房的学习,我觉得自己相对于学生来说,自己更加的成熟了。学生的时候还是,根据源码进行分析然后写的代码。机房的时候就是自己......
  • 有关JavaSe基础的反射知识总结
    反射这门技术在说之前首先来介绍一下动态语言和静态语言动态语言:在服务器运行的期间可以改变其结构的语言,在运行时代码可以根据某些条件来改变自身的结构,我们目前学习到的......
  • 2021年1月15日与米老师谈话总结
    今天上午约米老师进行了一个小验收,米老师和我们谈了谈应该怎么样进行学习,今天写在这里,留作总结。1:夹生饭什么是夹生饭,“夹生饭”指没熟透的饭。比喻一开始没有做好就再难......
  • 2021年度总结
    时光似箭,日月如梭,转眼间,2020年就过去了,今年对我而言是极为特别的一年,上半年因为一些众所周知的原因在家里上网课上了半年,下半年就开始了,我在提高班的......
  • 操作系统笔记总结
    操作系统一:什么是操作系统覆盖在硬件和操作软件中间的一个系统,和硬件部分相互作用,主要起一个承上启下的任务二:资源的管理者现代计算机支持多任务,多个应用程序共同使用......
  • 学生管理系统总结
    经历了一个月左右的学习,我的学生信息系统终于完工了,通过这个小工程,学习到了很多的新知识,在这里总结下来,有助于以后的学习。首先就是变量的问题,因为在我们设计代码的过程中......
  • 英语语法总结
    语法一共有多少类 语法可以分为两大类,一种是句法,另外一种是(语句的用法)句法之中的知识可以分为三类一:十大词类十大词类,这十大词类一共可以分为三类。第一大类:以名词......
  • 自考总结
    今天,2021年4月份的自考终于落下了帷幕。这次战线很长,准备的也比较充分。不知道自己能得到什么样的结果。这次自考我一共报了三门。信息资源管理、数据库、操作系统。这三门......
  • 触壁回弹总结
    模式:通过使用timer插件if语句判断实现图片运动。代码:运用的主要控件:picturel(图形)和timer(计时)主要属性:left:加数是向右移动减数是向左移动、top:(插件距离form的距离)加数是向下......