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

    这个和MySQLI大体上是一样的都是要先造对象、写sql语句、执行sql语句,返回PDOSTATEMENT对象、读取数据

    1.操作其它数据库

     1 //造PDO对象
     2 $dsn = "mysql:dbname=text_0408;host=localhost";
     3 $pdo = new PDO($dsn,"root","123456");
     4 
     5 //写sql语句
     6 $sql="select * from student";
     7 $sql = "update student set Sname='曾明' where Sno='108'";
     8 //执行sql语句,返回PDOSTATEMENT对象
     9 $stm=$pdo->query($sql);
    10 $arr=$pdo->exec($sql);//增删改用exec
    11 var_dump($arr);
    12 //读数据
    13 $arr = $stm->fetch(PDO::FETCH_NUM);//输出的是关联数组:fetch是输出一条数据, fetch_all是输出所有的数据;PDO::FETCH_ASSOC也有几个常用的:BOTH是关联和索引数组都有,ASSOC第关联数组,NUM是索引数组
    14 $arr = $stm->fetchAll(PDO::FETCH_ASSOC);
    15 var_dump($arr);

    2.事务功能

     1 //事务功能
     2 $dsn="mysql:dbname=text_0408;host=localhost";
     3 $pdo=new PDO($dsn,"root","123456");
     4 
     5 //把PDO的错误模式设置为异常模式
     6 $pdo>setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
     7 //捕捉异常
     8 try
     9 {
    10     //写在代码前面开启事务功能
    11     $pdo->beginTransaction();
    12     //sql代码
    13     $sql1="insert into nation values('z7','矮人族')";
    14     $sql2="insert into nation values('z9','巨人族')";
    15     $sql3="insert into nation values('z8','龙族')";
    16     $pdo->exec($sql1);
    17     $pdo->exec($sql2);
    18     $pdo->exec($sql3);
    19     //提交事务
    20     $pdo->commit();
    21 }//有一条数据输入错误其他数据都不会输入
    22 catch(Exception $e)
    23 {    
    24     //捕获异常并解决异常
    25      //echo $e->getMessage(); 
    26     //回滚
    27     $pdo->rollBack();
    28 //}

    3.预处理功能(防止sql注入攻击)

    (1)?占位符:数组必须是索引数组

     1 占位符:数组必须是索引数组
     2 /SQL语句里面需要加占位符 ?
     3 $sql = "select * from nation where code=?";
     4 //$sql = "insert into nation values(?,?)";
     5  
     6 //准备执行,返回PDOStatement对象
     7 $st = $pdo->prepare($sql);
     8  
     9 //1.调用绑定参数的方法来绑定参数:绑定的参数必须定义
    10 //$st->bindParam(1,$code);  //前两参数必须写:占位符位置,绑定的参数
    11 //$st->bindParam(2,$name);
    12  
    13 //2.索引数组
    14 $attr = array("","");  //$code,$name
    15  
    16 //执行方法
    17 $st->execute($attr);

    (2)字符串方式:数组必须是关联数组

     1 /占位符是字符串
     2 $sql = "insert into nation values(:code,:name)";
     3 //准备执行
     4 $st = $pdo->prepare($sql);<br><br>//1.调用绑定参数参数
     5 //$st->bindParam(":code",$code,PDO::PARAM_STR);  //前三个参数必须要:字符串,定义的绑定,类型
     6 //$st->bindParam(":name",$name,PDO::PARAM_STR);
     7 //$code = "n007";
     8 //$name = "测试3";
     9  
    10 //2.关联数组
    11 $attr = array("code"=>"n008","name"=>"测试4");
    12  
    13 $st->execute($attr);
  • 相关阅读:
    (68)zabbix windows性能计数器使用详解
    xenserver挂载新硬盘
    Centos7配置TiDB监控
    centos7下zabbix4.0配置磁盘IO监控
    XenServer7.6命令行导出导入虚拟机(迁移)
    Centos7修改分区空间
    Centos7安装xenserver tools
    Centos7配置TiDB集群
    Xenserver7.6修改root密码
    网络流量测试
  • 原文地址:https://www.cnblogs.com/douchenchen/p/6813119.html
Copyright © 2011-2022 走看看