1.操作其它数据库

(1)造对象

$dsn = "mysql:dbname=test3;host=localhost";  //数据源:两个参数:数据库驱动,链接数据库
$pdo = new PDO($dsn,"root","123");  //数据源,数据库名,密码

(2)写sql语句

1.  $sql = "select * from productor";  //查询这个表中的所有数据
2. $sql = " insert into productor values('p006','随便')"; //增删改语句

(3)执行语句:这里就和MySQLi()的不同之处了

1. $a = $pdo->query($sql);  //执行查询语句:用query();
//输出的是关联数组:fetch是输出一条数据, fetch_all是输出所有的数据;PDO::FETCH_ASSOC也有几个常用的:BOTH是关联和索引数组都有,ASSOC第关联数组,NUM是索引数组
$arr = $a->fetch(PDO::FETCH_ASSOC);
var_dump($arr);

2. $a = $pdo->exec($sql);   //执行其他语句:用exec();
var_dump($a);

   这样就是已经添加进数据库了     :

2.事务功能

事务:能够控制语句同时成功同时失败,失败时可以回滚
(1)造对象(上面已有)

(2)设置异常模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //直接拿过来用

(3)开始写事务:语句一起执行,其中只要有一条语句是错误的,就回滚到最开始,并且没有真正执行写入数据库中

try
{
//开启事务
$pdo ->beginTransaction(); $sql1 = "insert into productor values('p007','en')"; //是可以添加的
$sql2 = "insert into productor values('p008','we')";
$sql3 = "insert into productor values('p005','gh')"; //是不能添加的,也就是错误语句 $pdo->exec($sql1);
$pdo->exec($sql2);
$pdo->exec($sql3);
//提交
$pdo->commit(); //正真的写入到数据库中
}
catch(Exception $e)
{
//抓住try里面出现的错误,并且处理
echo $e->getMessage(); //获取异常信息
//回滚:回到语句最开始
$pdo->rollBack();
}

3.防止sql注入攻击

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

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

  

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

//占位符是字符串
$sql = "insert into nation values(:code,:name)";
//准备执行
$st = $pdo->prepare($sql); //1.调用绑定参数参数
//$st->bindParam(":code",$code,PDO::PARAM_STR); //前三个参数必须要:字符串,定义的绑定,类型
//$st->bindParam(":name",$name,PDO::PARAM_STR);
//$code = "n007";
//$name = "测试3"; //2.关联数组
$attr = array("code"=>"n008","name"=>"测试4"); $st->execute($attr);

  

PDO 数据访问抽象层的更多相关文章

  1. PDO数据访问抽象层

    PDO数据访问抽象层: 我们使用的mysqli是针对mysql这个数据库扩展的一个类,如果要用到别的数据库的话就可以用PDO来做 1.操作数据库 先来代码 <!--PDO--> <! ...

  2. PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05

    之前所学的数据访问都是用mysqli做成类来访问的,但是mysqli这个类只是针对mysql这个数据库的:那么如果访问其他类型的数据库呢? 那么这就用到了PDO(数据访问抽象层). 一.关于PDO基本 ...

  3. PHP中关于PDO数据访问抽象层的功能操作

    PDO:数据访问抽象层 具有三大特点: 1.可以访问其它数据库  所有数据库都可以 2.具有事务功能 3.带有预处理语句功能(防止SQL注入攻击) 实例操作代码如下: <?php //1.造PD ...

  4. PDO数据访问抽象层(上)

    PDO比MySQLi功能强大 PDO可以访问MySQL及其它数据库 一.造对象 <?php $dsn = "mysql:dbname = crud;host = localhost&q ...

  5. php 之 PDO数据访问抽象层(0513)

    PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口. PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数, 基于数据库使用的安全性,因为后者欠缺对于S ...

  6. 5月13 PDO数据访问抽象层

    方法1:较简单的 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  7. PDO数据访问抽象层(下)

    PDO两大功能 一.事务功能 PDO的事务功能主要控制好几条sql语句同时成功或者同时失败(当其中一条SQL语句有错误时,同时好几条一起失败),失败时可以回滚操作 1.造对象 <?php $ds ...

  8. php PDO:数据访问抽象层

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. PDO:数据访问抽象层

    <?php //PDO:数据访问抽象层 //带有事务功能: //dsn:数据源 $dsn="mysql:host=localhost;dbname=aaas"; //造pdo ...

随机推荐

  1. Nginx 正向代理

    目前现状:只有1个机器能上网(web),其他机器不能 方法:能上网的做一个代理web服务器中转,其他机器连接它即可.采用nginx Nginx配置如下: server{         resolve ...

  2. Ubuntu配置Tomcat9非root用户启动

    unix类系统的root用户具有极大的权利,所以很多时候我们不希望程序以root身份启动,这也就是配置Tomcat以指定身份(非root)启动的初衷,虽然也没人来攻击我的服务器,但本着学习学习的目的, ...

  3. JSTL标签库

    JSP页面作为内嵌java的Html简化了Servlet在控制页面显示的语法,但JSP脚本中的表达式功能不够强大,语法也稍显繁杂,EL(Expression Language)表达式语言的出现能够大大 ...

  4. 通读AFN①--从创建manager到数据解析完毕

    流程梳理 今天开始会写几篇关于AFN源码解读的一些Blog,首先要梳理一下AFN的整体结构(主要是讨论2.x版本的Session访问模块): 我们先看看我们最常用的一段代码: AFHTTPSessio ...

  5. jQuery整理

    近几日总是在用js写一些东西,jq用的反而少了,最近在工作中总是会用到不常用的jQuery方法,之前觉得可能用到的情况比较少,便没在意这些方法,结果吃了亏,现在准备重新总结一些jQuery中的一些常用 ...

  6. properties文件使用{0}...

    例如properties文件的配置 weixin.token.url=https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credent ...

  7. USACO翻译:USACO 2013 NOV Silver三题

    USACO 2013 NOV SILVER 一.题目概览 中文题目名称 未有的奶牛 拥挤的奶牛 弹簧牛 英文题目名称 nocow crowded pogocow 可执行文件名 nocow crowde ...

  8. 初识 Html5

    1.1认识HTML5 HTML5并不仅仅只是做为HTML标记语言的一个最新版本,更重要的是它制定了Web应用开发的一系列标准,成为第一个将Web做为应用开发平台的HTML语言. HTML5定义了一系列 ...

  9. SQL Server2008清除数据库日志

    m缪国瑞  11:10:17 --'这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询USE dochuanGOSELECT f ...

  10. TCP和UDP的区别

    (1)TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务:(2)TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序:UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等 ...