PDO(PHP Data Object)数据访问抽象层
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);
- ?>
- PDO::beginTransaction — 启动一个事务
- PDO::commit — 提交一个事务
- PDO::__construct — 创建一个表示数据库连接的 PDO 实例
- PDO::exec — 执行一条 SQL 语句,并返回受影响的行数(一般用于增删改)
- PDO::getAttribute — 取回一个数据库连接的属性
- PDO::prepare — Prepares a statement for execution and returns a statement object
- PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object(主要用于查询语句)
- PDO::rollBack — 回滚一个事务
- PDO::setAttribute — 设置属性
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)数据访问抽象层的更多相关文章
- php PDO:数据访问抽象层
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- PDO数据访问抽象层
PDO数据访问抽象层: 我们使用的mysqli是针对mysql这个数据库扩展的一个类,如果要用到别的数据库的话就可以用PDO来做 1.操作数据库 先来代码 <!--PDO--> <! ...
- PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05
之前所学的数据访问都是用mysqli做成类来访问的,但是mysqli这个类只是针对mysql这个数据库的:那么如果访问其他类型的数据库呢? 那么这就用到了PDO(数据访问抽象层). 一.关于PDO基本 ...
- PHP中关于PDO数据访问抽象层的功能操作
PDO:数据访问抽象层 具有三大特点: 1.可以访问其它数据库 所有数据库都可以 2.具有事务功能 3.带有预处理语句功能(防止SQL注入攻击) 实例操作代码如下: <?php //1.造PD ...
- PDO:数据访问抽象层
<?php //PDO:数据访问抽象层 //带有事务功能: //dsn:数据源 $dsn="mysql:host=localhost;dbname=aaas"; //造pdo ...
- PDO(数据访问抽象层)
自带事务功能,多条sql同时执行时,如果其中一条执行失败,那么所有的都执行失败.开启了事务,可以进行回滚操作,让程序变得更安全. 1.访问不同的数据库2.自带事务功能3.防止SQL注入:分两次发送 / ...
- php 之 PDO数据访问抽象层(0513)
PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口. PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数, 基于数据库使用的安全性,因为后者欠缺对于S ...
- PDO数据访问抽象层(上)
PDO比MySQLi功能强大 PDO可以访问MySQL及其它数据库 一.造对象 <?php $dsn = "mysql:dbname = crud;host = localhost&q ...
- PDO 数据访问抽象层
1.操作其它数据库 (1)造对象 $dsn = "mysql:dbname=test3;host=localhost"; //数据源:两个参数:数据库驱动,链接数据库 $pdo = ...
随机推荐
- SVN:cannot map the project with svn provider解决办法
转自:http://www.blogjava.net/jzone/articles/337697.html 首先,叙述一下令人蛋疼的情况,纠结了我几个小时,更新Workspace原有的项目,显示更新成 ...
- C语言的位运算的优势
位运算加速技巧1. 如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300% x = x * 2;x = x * 64;//改为:x = x << 1; // 2 ...
- --@angularJS--独立作用域scope绑定策略之&符策略
1.index.html: <!DOCTYPE HTML><html ng-app="app"><head> <title>s ...
- Intent对象详解——使用Intent启动系统组件
Android的应用程序包含三种重要组件:Activity.Service.BroadcastReceiver,应用程序采用一致的方式来启动它们——都是依靠Intent来启动的,Intent就封装了程 ...
- Tomcat配置全攻略
tomcat的的下载地址http://www.apache.org/dist/jakarta/tomcat-4/ 1.安装jdk,详细操作请参考本站windows 2k和redhat 8.0下java ...
- Tomcat 使用过程中的一些技巧
url中文地址乱码 原因: tomcat默认的在url传输时是用iso8859-1编码. 解决方案一: 在使用get传输参数时,将参数中的中文转换成url格式,也就是使用urlEncode和urlDe ...
- lufylegend库 鼠标事件 循环事件 键盘事件
lufylegend库 鼠标事件 循环事件 键盘事件 <!DOCTYPE html> <html lang="en"> <head> <m ...
- Android自定义控件系列(四)—底部菜单(下)
转载请注明出处:http://www.cnblogs.com/landptf/p/6290862.html 在app中经常会用到底部菜单的控件,每次都需要写好多代码,今天我们用到了前几篇博客里的控件来 ...
- Git学习之路(1)-Git简介
▓▓▓▓▓▓ 大致介绍 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds ...
- u3d脚本生命周期