之前所学的数据访问都是用mysqli做成类来访问的,但是mysqli这个类只是针对mysql这个数据库的;那么如果访问其他类型的数据库呢?

那么这就用到了PDO(数据访问抽象层)。

一、关于PDO基本语句(以MySQL数据库为例,因为电脑没有其他的数据库)

(1)造PDO对象

$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","");

格式:

$dsn = "数据库;地址";
$pdo = new PDO(数据源,用户,密码);

(2)写SQL语句

$sql = "select * from info";
$sql = "update info set name='张三' where code='p001'";

(3)执行SQL语句,返回PDOSTATEMENT对象

查询:

$stm = $pdo->query($sql);

增删改:

$arr = $pdo->exec($sql);

(4)读数据

$arr = $stm->fetch(PDO::FETCH_NUM);
$arr = $stm->fetchAll(PDO::FETCH_ASSOC);

注:

PDO::FETCH_ASSOC:返回关联数组
PDO::FETCH_NUM:返回索引数组
PDO::FETCH_BOTH:返回关联和索引数组

二、事务功能 (实现几个sql语句的一起操作,要操作成功都成功,要失败都失败)

<?php
$dsn = "mysql:dbname=mydb;host=localhost";
$pdo = new PDO($dsn,"root","123"); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try
{
//开启事务功能
$pdo->beginTransaction(); $sql1 = "insert into nation values('n016','是是')";
$sql2 = "insert into nation values('n019','是是')";
$sql3 = "insert into nation values('n018','是是')"; $pdo->exec($sql1);
$pdo->exec($sql2);
$pdo->exec($sql3); //提交事务
$pdo->commit();
}
//捕获异常并解决异常
catch(Exception $e)
{ //回滚
$pdo->rollBack();
} ?>

三、预处理功能

第一种预处理方式:(索引数组方式)

    <?php
$dsn = "mysql:dbname=hw_0408;host=localhost";
$pdo = new PDO($dsn,"root","123"); //第一种预处理方式
$sql = "insert into nationality values (?,?)"; //将预处理语句发送到服务器等待执行,返回pdostatement对象。
$stm = $pdo->prepare($sql); //对应第一种预处理方式的
$arr = array("12","很可观的"); $stm->execute($arr);
echo "执行成功"; ?>

第二种预处理方式:(关联数组方式)   这种方式好用~

    <?php
$dsn = "mysql:dbname=hw_0408;host=localhost";
$pdo = new PDO($dsn,"root","123"); //第二种预处理方式
$sql = "insert into nationality values (:mzcode,:nationality)"; //将预处理语句发送到服务器等待执行,返回pdostatement对象。
$stm = $pdo->prepare($sql); //对应第二种预处理方式的
$arr = array("mzcode"=>"14","nationality"=>"想在哪看过"); $stm->execute($arr);
echo "执行成功"; ?>

四、第二种预处理方式的例子

添加页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form method="post" action="chuli.php">
<div>代号:<input type="text" name="code" /></div>
<div>民族:<input type="text" name="nation" /></div>
<input type="submit" value="添加" />
</form>
</body>
</html>

处理过程:

<?php
$dsn = "mysql:dbname=hw_0408;host=localhost";
$pdo = new PDO($dsn,"root","123");
$sql = "insert into nationality values (:code,:nation)";
$stm = $pdo->prepare($sql);
//$_POST取出的数组正好是关联数组,所以可以直接用
$stm->execute($_POST);
echo "执行成功";
?>

PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05的更多相关文章

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

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

  2. PDO数据访问抽象层

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

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

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

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

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

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

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

  6. PDO 数据访问抽象层

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

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

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

  8. PDO:数据访问抽象层

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

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

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

随机推荐

  1. idea调试SpringMvc, 出现:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener错误的解决办法

    有时,使用idea开发SpringMvc发现调试时出现以下错误: 12-Mar-2017 12:08:02.345 严重 [RMI TCP Connection(2)-127.0.0.1] org.a ...

  2. HTML5微数据

    本篇文章是一个纯搬运贴,原博主是在是做的太详细了 原贴地址:http://www.zhangxinxu.com/wordpress/2011/12/html5扩展-微数据-丰富网页摘要/ 一.微数据是 ...

  3. 解决华为手机不打印Log信息的问题

    在之前安装了Android Studio后,发现了一个很苦恼的事情,就是在程序中的写Log语句,不能正常的在Logcat中打印出来,这对于解决程序bug真是一刀切断,让人无从下手,在各种尝试后,首先我 ...

  4. HTML 部分常用属性、组成属性|...超链接、路径、锚点、列表、滚动、URL编码、表格、表单、GET和POST

    URL地址 就是我们所说的网址:www.jd.com 浏览器内核,渲染引擎 Ie内核:triteent 谷歌/欧鹏:blink 火狐:gecko 苹果:webkit 渲染引擎是出现兼容性的根本问题 - ...

  5. 无图无定位新版css步骤条兼容ie6+

    <ul class="ui-step list-unstyled"> <li class="step-item"><b class ...

  6. 从今天开始学习Java了

    //今天第一天学习了Java的起源兴起和用途,Java的特点和优势,又重新练习了hello world, public class Hello{ public static void main(Str ...

  7. 什么是node.js

    1.0什么是nodejs 1.1定义: Node.js是Javascript除了浏览器之外可以运行的另一个环境(runtime).可以为我们提供开启服务功能和提供文件读写功能 1.2特点: 1)基于g ...

  8. Terminating app due to uncaught exception 'NSUnknownKeyException' this class is not key value coding-compliant for the key

     Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ViewController > se ...

  9. OpenCV局部变形算法探究

    OpenCV是跨平台的强大的计算机视觉识别和图像处理的开源库,可以利用他来实现:模式识别.构建神经网络.深度学习,总之用途多多,入门级就先做一下图像处理吧! 基本的图像处理算法(图像灰阶化.二值化.仿 ...

  10. Hadoop/Spark开发环境配置

    修改hostname bogon 为localhost 查看ip地址 [training@bogon ~]$ sudo hostname localhost [training@bogon ~]$ h ...