自带事务功能,多条sql同时执行时,如果其中一条执行失败,那么所有的都执行失败。
开启了事务,可以进行回滚操作,让程序变得更安全。

1.访问不同的数据库
2.自带事务功能
3.防止SQL注入:分两次发送

/*1.造对象
$dsn = "mysql:dbname=mydb;host=localhost";    //数据源名叫做 dsn
$pdo = new PDO($dsn,"root","123"); 2.写SQL语句
$sql = "update nation set name='兽族' where code='n013'"; 3.执行SQL语句
$r = $pdo->query($sql);
$r = $pdo->exec($sql);*/        //exec执行一条sql语句,并返回受影响的行数(增删改) //事务功能
//造对象
$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123"); //设置异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //写SQL语句
$sql1 = "insert into nation values('n016','人族')";
$sql2 = "insert into nation values('n017','不死族')"; //执行两条SQL语句
try //代表试着执行两句sql语句,如果出现异常,用catch抓住,不交给程序处理
{
//启动事务
$pdo->beginTransaction(); $pdo->exec($sql1);
$pdo->exec($sql2); //提交事务
$pdo->commit();
}
catch(PDOException $e) //catch抓住异常,异常当做参数传过来放到e里面,PDOException是参数类型,里面有个getmessage方法,获取错误信息
{
//$e->getMessage();
//回滚
$pdo->rollBack();
}
final            //最终的意思。 在其他语言中出现,一般用来做数据连接的关闭
{ }

防止sql注入攻击(因为它是分两次传送,所以要进行占位)

问号占位:

造对象
$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123"); 写SQL语句,预处理语句
$sql = "insert into nation values(?,?)"; 准备SQL语句,返回statement对象
$st = $pdo->prepare($sql); 绑定参数
/*$st->bindParam(1,$code);
$st->bindParam(2,$name); $code="n022"; //绑定完之后可以赋值
$name="矮人族";*/ $attr = array("n023","魔族"); //简写方法 //提交执行,不用给SQL语句了,已经传过去了
var_dump($st->execute($attr)); //预处理语句里面用?占位的,给数组的时候要给索引数组

name占位:

<?php

//造对象
$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123"); //写SQL语句,预处理语句,使用name占位
$sql = "insert into nation values(:code,:name)"; //准备执行
$st = $pdo->prepare($sql); //绑定参数
/*$st->bindParam(":code",$code,PDO::PARAM_STR); //$code参数 PDO::PARAM_STR指定参数必须是一个字符串
$st->bindParam(":name",$name,PDO::PARAM_STR); $code="n024";
$name="狼族";*/ $attr = array("code"=>"n025","name"=>"虫族"); //执行
$st->execute($attr);

PDO查询:

<?php

//造对象
$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123"); //写SQL语句,预处理语句
$sql = "select * from nation"; //准备执行
$st = $pdo->prepare($sql); //执行
$st->execute(); //读数据
var_dump($st->fetchAll(PDO::FETCH_ASSOC)); //调用fetch方法是每次读一行。返回关联跟索引数组。里面的参数是选择返回关联或索引数组 ?>

示例:

简单的登录页面:

<form action="chuli.php" method="post">
<input type="text" name="code" />
<input type="text" name="name" />
<input type="submit" value="提交" />
</form>

使用PDO    name占位方法

<?php
//造对象
$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123"); //写SQL语句,预处理语句,使用name占位
$sql = "insert into nation values(:code,:name)"; //准备执行
$st = $pdo->prepare($sql); //执行
$st->execute($_POST); //post关联数组 里面有code、name值

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. PDO 数据访问抽象层

    1.操作其它数据库 (1)造对象 $dsn = "mysql:dbname=test3;host=localhost"; //数据源:两个参数:数据库驱动,链接数据库 $pdo = ...

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

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

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

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

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

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

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

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

  10. PDO:数据访问抽象层

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

随机推荐

  1. iSCSI配置流程

    Windows群集两个节点:分别在SQL01和SQL02设置连接共享磁盘: 此前已经在存储服务器通过StarWind创建了三个虚拟磁盘:Quemon+data+backup:starwind安装请参考 ...

  2. R笔记1

    gsub format > measurements<-c('3.95*3.99*2.43mm','3*3*5mm','2*2*2mm') > measurements [1] &q ...

  3. java系列-安装MySql(三)

    第一大步:MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装 ...

  4. ajax状态

    ajax的几个状态 Uninitialized 初始化状态.XMLHttpRequest 对象已创建或已被 abort() 方法重置. Open open() 方法已调用,但是 send() 方法未调 ...

  5. 利用Jquery的load函数实现页面的动态加载

    利用Jquery的load函数实现页面的动态加载  js的强大功能相信大家都知晓,今天通过jquery的库函数load可以更加方便的实现页面的动态刷新,经过几天的研究与探索,终于有所成效!吾心甚蔚! ...

  6. Javascript高级程序设计——客户端检测

    ECMAScript虽然是Javascript的核心,但是要在web中使用Javascript,那么BOM才是核心,BOM为我们提供了操作访问浏览器对象的借口, 但是由于BOM没有标准规范,导致存在不 ...

  7. jquery左右滑动效果的实现

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

  8. JQuery选择器细节-遁地龙卷风

    1.层次选择器-子元素选择器 <body> <div> <p>lol</p> <div> <p></p> </ ...

  9. JS清除IE浏览器缓存的方法

    js中自动清除ie缓存方法 — 常用 对于动态文件,比如 index.asp?id=... 或者 index.aspx?id=... 相信有经验的程序员都知道怎样禁止浏览器缓存数据了.但是对于静态文件 ...

  10. 如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理

    导读 Nginx 是最快和最强大的 Web 服务器之一,以其高性能和低资源占用率而闻名.它既可以被安装为一个独立的 Web 服务器,也可以安装成反向代理 Web 服务器.在这篇文章,我将讨论在安装了 ...