zoukankan      html  css  js  c++  java
  • PDO 数据访问抽象层

    //PDO
    //数据访问抽象层
    <?php
    
    //1.操作其它数据库
    //2.事务功能
    //3.防止SQL注入攻击
    
    //造PDO对象
    //$dsn = "mysql:dbname=mydb;host=localhost"; //数据源
    //$pdo = new PDO($dsn,"root","123");
    
    //写SQL语句
    //$sql = "select * from nation";
    //$sql = "insert into nation values('n077','数据')";
    
    //执行,返回的是PDOStatement对象
    //$a = $pdo->query($sql); //执行查询
    //$a = $pdo->exec($sql); //执行其他语句
    
    //var_dump($a);
    
    //$arr = $attr->fetchAll(PDO::FETCH_BOTH);
    //var_dump($arr);
    
    
    //事务功能
    //事务:能够控制语句同时成功同时失败,失败时可以回滚
    
    $dsn = "mysql:dbname=mydb;host=localhost";        //数据库名称,服务器
    $pdo = new PDO($dsn,"root","123");
    
    //设置异常模式
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
    
    try
    {
        //开启事务
        $pdo ->beginTransaction(); 
        
        $sql1 = "insert into nation values('n080','是删')";
        $sql2 = "insert into nation values('n070','好几款')";
        $sql3 = "insert into nation values('n075','好几款')";
        
        $pdo->exec($sql1);
        $pdo->exec($sql2);
        $pdo->exec($sql3);               // 三个的执行成功是并的关系,否则出错。
       
        //提交
        $pdo->commit();
    }
    catch(Exception $e)
    {
        //抓住try里面出现的错误,并且处理zv
        //echo $e->getMessage(); //获取异常信息
        
        //回滚
        $pdo->rollBack();
    }
    //final()
    //{
        //最终执行,无论以上try代码有没有出错,都会执行
    //}
    
    
    
    ?>
    
    </body>
    <?php
    
    //预处理语句防止SQL注入
    $dsn = "mysql:dbname=mydb;host=localhost";
    $pdo = new PDO($dsn,"root","123");
    
    //$code = "n005";
    
    //SQL语句里面需要加占位符 ?
    //$sql = "select * from nation where code=?";
    $sql = "insert into nation values(?,?)";
    
    //准备执行,返回PDOStatement对象
    $st = $pdo->prepare($sql);
    
    //调用绑定参数的方法来绑定参数
    //$st->bindParam(1,$code);
    //$st->bindParam(2,$name);
    //$name = "测试1";
    
    //索引数组                      //注意区别
    $attr = array("n006","测试2");
    
    //执行方法
    $st->execute($attr);
    
    //$attr = $st->fetchAll();
    
    //var_dump($attr);
    
    
    
    
    ?>
    <?php
    
    $dsn = "mysql:dbname=mydb;host=localhost";
    $pdo = new PDO($dsn,"root","123");
    
    //占位符是字符串
    $sql = "insert into nation values(:code,:name)";
    
    $st = $pdo->prepare($sql);      //等待执行。prepare准备
    //$st->bindParam(":code",$code,PDO::PARAM_STR);
    //$st->bindParam(":name",$name,PDO::PARAM_STR);
    //$code = "n007";
    //$name = "测试3";
    
    //关联数组                               //与?占位符的区别
    $attr = array("code"=>"n008","name"=>"测试4");
    
    $st->execute($attr);
    
    
    ?>
  • 相关阅读:
    HTML5中的时间类型,另外EL表达式的时间值来读取时间,并且还可以更改时间
    Python开发【第十六篇】:AJAX全套
    Python开发【第十五篇】:Web框架之Tornado
    Python开发【第十四篇】:Web框架本质
    svn强制解锁的几种做法
    Apache日志配置详解(rotatelogs LogFormat)
    MYSQL权限回收
    nginx 日志切割
    日志增量发送到服务器
    python 日志收集系统
  • 原文地址:https://www.cnblogs.com/1358-com/p/6246974.html
Copyright © 2011-2022 走看看