自带事务功能,多条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. Win7与XP共享互相访问及共享注意事项!

    win7共享方法和XP类似,主要需要检查以下操作: 1,首先将Guest账户打开 2,右击文件夹-属性-共享选项-高级共享 3,将共享文件√打上,应用-确定即可! 4,查看自己IP(开始-运行-cmd ...

  2. firefox浏览器不能使用window.close的解决方案

    javascript中window.close()函数用来关闭窗体,而且IE.google.firefox浏览均支持,但由于firefox浏览器dom.allow_scripts_to_close_w ...

  3. ASP.NET原理分析

    ASP.NET请求与处理全过程分析 1.用户向服务器的某IP端口发送请求,此端口通过Http.sys来管理,请求报文被Http.sys接收,Http.sys在注册表中找能处理这个请求类型的应用程序,最 ...

  4. PHP Closure类Bind与BindTo方法

    Closure类为闭包类,PHP中闭包都是Closure的实例: 1 $func = function(){}; 2 var_dump($func instanceof Closure); 输出 bo ...

  5. Javascript高级程序设计——函数

    函数Function 通过函数封装多条语句,在任何地方执行.javascript函数不会重载,相同名字函数,名字属于后定义的函数通过function关键词声明. function functionNa ...

  6. MAC地址,使用java获取IP地址和MAC地址。

    MAC地址,通常在http连接的项目中,来区分唯一客户端. MAC:六组十六进制字符组成. 如:E0-3F-49-AB-DB-EB IP:四组八位的二进制字符组成. 如:10.6.62.244 /** ...

  7. python os.path.dirname 是什么目录

    这个获取文件路径中所在的目录. 1 2 3 4 5 6 7 In [1]: import os   In [2]: os.__file__ Out[2]: '/usr/lib/python2.7/os ...

  8. UIView动画效果

    做出UI界面,实现程序功能,是重中之重,但是通过动画提升使用体验,一般人应该不会拒绝吧. 那么问题又来了,怎么做? 一: 稳扎稳打: 一步一步来吧,毕竟,心急吃不了热豆腐. 1.开启一个动画 2,设置 ...

  9. 教你搭建SpringSecurity3框架( 更新中、附源码)

    源码下载地址:http://pan.baidu.com/s/1qWsgIg0 一.web.xml <?xml version="1.0" encoding="UTF ...

  10. 简单的哈希表实现 C语言

    简单的哈希表实现 简单的哈希表实现 原理 哈希表和节点数据结构的定义 初始化和释放哈希表 哈希散列算法 辅助函数strDup 哈希表的插入和修改 哈希表中查找 哈希表元素的移除 哈希表打印 测试一下 ...