PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05
之前所学的数据访问都是用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的更多相关文章
- PHP中关于PDO数据访问抽象层的功能操作
PDO:数据访问抽象层 具有三大特点: 1.可以访问其它数据库 所有数据库都可以 2.具有事务功能 3.带有预处理语句功能(防止SQL注入攻击) 实例操作代码如下: <?php //1.造PD ...
- PDO数据访问抽象层
PDO数据访问抽象层: 我们使用的mysqli是针对mysql这个数据库扩展的一个类,如果要用到别的数据库的话就可以用PDO来做 1.操作数据库 先来代码 <!--PDO--> <! ...
- PDO数据访问抽象层(上)
PDO比MySQLi功能强大 PDO可以访问MySQL及其它数据库 一.造对象 <?php $dsn = "mysql:dbname = crud;host = localhost&q ...
- PDO数据访问抽象层(下)
PDO两大功能 一.事务功能 PDO的事务功能主要控制好几条sql语句同时成功或者同时失败(当其中一条SQL语句有错误时,同时好几条一起失败),失败时可以回滚操作 1.造对象 <?php $ds ...
- 5月13 PDO数据访问抽象层
方法1:较简单的 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- PDO 数据访问抽象层
1.操作其它数据库 (1)造对象 $dsn = "mysql:dbname=test3;host=localhost"; //数据源:两个参数:数据库驱动,链接数据库 $pdo = ...
- php 之 PDO数据访问抽象层(0513)
PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口. PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数, 基于数据库使用的安全性,因为后者欠缺对于S ...
- PDO:数据访问抽象层
<?php //PDO:数据访问抽象层 //带有事务功能: //dsn:数据源 $dsn="mysql:host=localhost;dbname=aaas"; //造pdo ...
- php PDO:数据访问抽象层
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- Linux块设备驱动(一) _驱动模型
块设备是Linux三大设备之一,其驱动模型主要针对磁盘,Flash等存储类设备,本文以3.14为蓝本,探讨内核中的块设备驱动模型 框架 下图是Linux中的块设备模型示意图,应用层程序有两种方式访问一 ...
- win10+vs2010+cuda7.5安装及配置
http://blog.csdn.net/u011821462/article/details/50145221 这篇博客已经写得很详细了.
- iOS开发之NSTimer
1.NSTimer叫做“定时器”,它的作用如下 Ø 在指定的时间执行指定的任务 Ø 每隔一段时间执行指定的任务 2.调用NSTimer下面的方法就会开启一个定时任务 + (NSTimer *)sche ...
- memcached参数解释及常用命令
一.执行 memcached -h 会显示所有的参数项,对应的中文解释如下: -p <num> 监听的TCP端口(默认: 11211) -U <num> 监 ...
- Yii2中rules验证规则
required : 必须值验证属性 [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; #说明:CRequiredV ...
- httpclient源码分析之MainClientExec
MainClientExec是HTTP请求处理链中最后一个请求执行环节,负责与另一终端的请求/响应交互,也是很重要的类. 源码版本是4.5.2,主要看execute方法,并在里面添加注释.接着详细说下 ...
- js复制内容到剪切板,兼容pc和手机端,支持Safari浏览器
最近,一些项目中用到监听用户复制.剪切的操作. 案例1.在PC端,当用户获得一个京东卡的使用券,当用户使用ctrl + C复制得到的使用券时,将使用券的代号复制到粘贴板,以便于用户ctrl+v进行 ...
- C++ 网络爬虫实现
最近有个概念吵得很火,网络爬虫,但是基本都是用什么python或者JAVA写,貌似很少看到用c++写的,我在网上找了一个,看到其实还是很简单的算法 算法讲解:1.遍历资源网站 2.获取html信息 ...
- Object-C知识点
Object-C常用的知识点,以下为我在实际开发中用到的知识点,但是又想不起来,需要百度一下的知识点 1. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: ...
- 初识Object-C
Object-C是苹果推出用来开发苹果软件的一门编程语言.大学学了3年的JAVA,到了大四毅然决然的放弃JAVA,是因为第一次接触Object-C就被它的简单语法吸引了.其实不仅仅是语法简单,相对于A ...