1.可以访问其它数据库
2.具有事务功能
3.带有预处理语句功能(防止SQL注入攻击)

访问数据库

PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )

$dsn = 'mysql:dbname=testdb;host=127.0.0.1' ;

例:

<?php
//1.造PDO对象
$dsn ="mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","root");
//2.写SQL语句
$sql = "select * from nation";
//3.执行SQL语句
$stm = $pdo->query($sql);
//4.从PDOStatement对象里面读数据
$arr = $stm->fetch(PDO::FETCH_ASSOC);
var_dump($arr); ?>
<?php

$dsn ="mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","root");
$sql = "insert into nation values('002','毛毛')";
$arr = $pdo->exec($sql);
var_dump($arr); ?>

PDOStatement::fetch从结果集中获取下一行

  • PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组

  • PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组

  • PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组

  • PDO::FETCH_OBJ:返回一个属性名对应结果集列名的匿名对象

事务功能(在事务里面的内容,要么全部执行,要么都不执行。例如转账,这边扣钱,对方就得收到钱;而不能这边扣钱了,对方没收到钱。)

<?php

    //beginTransaction 启动事务
//commit 提交事务
//rollback 回滚 $dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","root"); //将PDO的错误类型设置为异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try
{
//开启事务
$pdo->beginTransaction(); $sql1 = "insert into nation values('082','数据')";
$sql2 = "insert into nation values('084','的库')";
$sql3 = "insert into nation values('083','帅哥')"; $pdo->exec($sql1);
$pdo->exec($sql2);
$pdo->exec($sql3); //提交事务
$pdo->commit();
}
catch(Exception $e)//抓取操作
{
//回滚操作
$pdo->rollBack();
}
/*final
{
//最终执行,无论有没有异常出现,该代码都会执行
}*/ ?>

带有预处理功能

第一种方式(其中的?多了,看的眼花)

<?php

$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","root"); //写一个预处理语句
$sql = "insert into nation values(?,?)";
//将预处理语句扔到服务器等待执行,返回PDOStatement对象
$stm = $pdo->prepare($sql); //第二次将变量(参数)扔到服务器的SQL语句相应位置,给预处理语句绑定参数
/*$stm->bindParam(1,$code);
$stm->bindParam(2,$name);
$code = "n085";
$name = "天族";
*/ //定义索引数组
$arr = array("n082","数据"); //执行
$stm->execute($arr);
?>

第二种方式(一般采用这种方式)

<?php

$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","root"); //预处理语句
$sql = "insert into nation values(:code,:name)";
$stm = $pdo->prepare($sql); //绑定参数
/*$stm->bindParam(":code",$code);
$stm->bindParam(":name",$name);
$code = "n070";
$name = "神族";*/ //造一个数组
$arr = array("code"=>"n071","name"=>"胜率"); //执行
$stm->execute($arr); ?>

例:

第一个页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<h1>添加数据</h1>
<form action="chuli.php" method="post">
<div>代号:<input type="text" name="code" /></div>
<div>名称:<input type="text" name="name" /></div>
<input type="submit" value="添加" />
</form>
</body>
</html>

第二个页面

<?php

$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","root"); //预处理语句
$sql = "insert into nation values(:code,:name)";
$stm = $pdo->prepare($sql); //执行
$stm->execute($_POST);

第二个页面中的:值最好与第一个页面的提交过来的name名字一样,这样后面执行的时候就能直接取_POST了

PDO(PHP Data Object)数据访问抽象层的更多相关文章

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

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

  2. PDO数据访问抽象层

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

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

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

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

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

  5. PDO:数据访问抽象层

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

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

    自带事务功能,多条sql同时执行时,如果其中一条执行失败,那么所有的都执行失败.开启了事务,可以进行回滚操作,让程序变得更安全. 1.访问不同的数据库2.自带事务功能3.防止SQL注入:分两次发送 / ...

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

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

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

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

  9. PDO 数据访问抽象层

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

随机推荐

  1. iOS 选择框 单选框

    UIButton *checkbox = [UIButton buttonWithType:UIButtonTypeCustom]; CGRect checkboxRect = CGRectMake( ...

  2. reg 正则

    //转化为camel形式 var text = 'border-color-base'; text.replace(/-(\w{1})/g, function (match, chr1) { retu ...

  3. java中常用的空判断

    Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: 比较字 ...

  4. OC强弱引用的使用规则

    强弱引用的唯一区别只是体现在对象的消亡上. 当一个对象不再有强引用指向它时,它就会被销毁. 弱引用不持有对象,不计入自动引入计数,所以不用考虑它销毁的问题.

  5. delphi bitbutton和speedbutton.button有什么区别

    http://zhidao.baidu.com/link?url=LT9_iwv47GfSp3m0MmUSablZrPOxzjKtqWW1yVMTbHnIs2DdCE-0qX2bwXZ2020x_Jl ...

  6. Delphi 常用API 函数

    Delphi 常用API 函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconic ...

  7. 负载均衡 Lvs DR 模式笔记

    先来一张原理图,相当于ip-tun模式把tunl0的那块网卡配置在eth0:0的这个接口上,避免了兼容性的问题

  8. Html在网页、页面中放置Swf、Flash 背景

    Html 在网页.页面中放置Swf.Flash背景: <embed src="image/index.swf" wmode=transparent style="p ...

  9. Paxos 实现日志复制同步(Multi-Paxos)

    Paxos 实现日志复制同步 这篇文章以一种易于理解的方式来解释 Multi-Paxos 的机制. Multi-Paxos 的是为了创建日志复制 一种实现方式是用一组基础 Paxos 实例,每条记录都 ...

  10. 001.MVC基本概述

    MVC的基本概念 一.NET平台下开发web应用程序的方案(方法) 方案A:ASP.NET webForm1.web窗体:臃肿(胖)性能低 优点:有很多的web控件可以使用,能够方便的和服务端交互(数 ...