PDO 数据访问抽象层
1.操作其它数据库
(1)造对象
$dsn = "mysql:dbname=test3;host=localhost"; //数据源:两个参数:数据库驱动,链接数据库
$pdo = new PDO($dsn,"root","123"); //数据源,数据库名,密码
(2)写sql语句
1. $sql = "select * from productor"; //查询这个表中的所有数据
2. $sql = " insert into productor values('p006','随便')"; //增删改语句
(3)执行语句:这里就和MySQLi()的不同之处了
1. $a = $pdo->query($sql); //执行查询语句:用query();
//输出的是关联数组:fetch是输出一条数据, fetch_all是输出所有的数据;PDO::FETCH_ASSOC也有几个常用的:BOTH是关联和索引数组都有,ASSOC第关联数组,NUM是索引数组
$arr = $a->fetch(PDO::FETCH_ASSOC);
var_dump($arr);

2. $a = $pdo->exec($sql); //执行其他语句:用exec();
var_dump($a);
这样就是已经添加进数据库了 :
2.事务功能
事务:能够控制语句同时成功同时失败,失败时可以回滚
(1)造对象(上面已有)
(2)设置异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //直接拿过来用
(3)开始写事务:语句一起执行,其中只要有一条语句是错误的,就回滚到最开始,并且没有真正执行写入数据库中
try
{
//开启事务
$pdo ->beginTransaction(); $sql1 = "insert into productor values('p007','en')"; //是可以添加的
$sql2 = "insert into productor values('p008','we')";
$sql3 = "insert into productor values('p005','gh')"; //是不能添加的,也就是错误语句 $pdo->exec($sql1);
$pdo->exec($sql2);
$pdo->exec($sql3);
//提交
$pdo->commit(); //正真的写入到数据库中
}
catch(Exception $e)
{
//抓住try里面出现的错误,并且处理
echo $e->getMessage(); //获取异常信息
//回滚:回到语句最开始
$pdo->rollBack();
}
3.防止sql注入攻击
(1)?占位符:数组必须是索引数组
/SQL语句里面需要加占位符 ?
$sql = "select * from nation where code=?";
//$sql = "insert into nation values(?,?)"; //准备执行,返回PDOStatement对象
$st = $pdo->prepare($sql); //1.调用绑定参数的方法来绑定参数:绑定的参数必须定义
//$st->bindParam(1,$code); //前两参数必须写:占位符位置,绑定的参数
//$st->bindParam(2,$name); //2.索引数组
$attr = array("",""); //$code,$name //执行方法
$st->execute($attr);
(2)字符串方式:数组必须是关联数组
//占位符是字符串
$sql = "insert into nation values(:code,:name)";
//准备执行
$st = $pdo->prepare($sql); //1.调用绑定参数参数
//$st->bindParam(":code",$code,PDO::PARAM_STR); //前三个参数必须要:字符串,定义的绑定,类型
//$st->bindParam(":name",$name,PDO::PARAM_STR);
//$code = "n007";
//$name = "测试3"; //2.关联数组
$attr = array("code"=>"n008","name"=>"测试4"); $st->execute($attr);
PDO 数据访问抽象层的更多相关文章
- 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数据访问抽象层(上)
PDO比MySQLi功能强大 PDO可以访问MySQL及其它数据库 一.造对象 <?php $dsn = "mysql:dbname = crud;host = localhost&q ...
- php 之 PDO数据访问抽象层(0513)
PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口. PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数, 基于数据库使用的安全性,因为后者欠缺对于S ...
- 5月13 PDO数据访问抽象层
方法1:较简单的 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- PDO数据访问抽象层(下)
PDO两大功能 一.事务功能 PDO的事务功能主要控制好几条sql语句同时成功或者同时失败(当其中一条SQL语句有错误时,同时好几条一起失败),失败时可以回滚操作 1.造对象 <?php $ds ...
- php PDO:数据访问抽象层
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- PDO:数据访问抽象层
<?php //PDO:数据访问抽象层 //带有事务功能: //dsn:数据源 $dsn="mysql:host=localhost;dbname=aaas"; //造pdo ...
随机推荐
- 什么是Angularjs
AngularJs(后面就简称ng了)是一个用于设计动态web应用的结构框架.首先,它是一个框架,不是类库,是像EXT一样提供一整套方案用于设计web应用.它不仅仅是一个javascript框架,因为 ...
- python学习 1基础
对象的等于只是对于值而言 函数定义没有变量提升 常用对象 list []: 列表, 排序省空间 tuple (): 元组,一旦初始化不可修改 dict {}: 字典,方便查询 set {}:集合, 值 ...
- Nodemanager Out of heap memory[fix bug全过程]
问题: 自己写了一个yarn上的application,发现nodemanager过段时间,会out of memory退出,把nodemanager的heap memory从1G增大到2G也是无法避 ...
- js 逻辑或
逻辑或操作符由两个竖线来表示||,属于短路操作符,也就是说,如果第一个操作数的求职结果为true,就不会对第二个操作数进行求值 var found = true; var result = found ...
- 从零开始山寨Caffe·陆:IO系统(一)
你说你学过操作系统这门课?写个无Bug的生产者和消费者模型试试! ——你真的学好了操作系统这门课嘛? 在第壹章,展示过这样图: 其中,左半部分构成了新版Caffe最恼人.最庞大的IO系统. 也是历来最 ...
- unity3D脚本中,update ,fixupdate 和lateupdate的区别
1.MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. 2.MonoBehaviour.FixedUpdate 固定更新 当MonoBe ...
- [译]App Framework 2.1 (1)之 Quickstart
最近有移动App项目,选择了 Hybrid 的框架Cordova 和 App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和 ...
- 前端小知识~~关于css3新增知识~~归纳总结
1.新增选择器 E:nth-last-child(n) E:nth-of-type(n) E:nth-last-of-type(n) E:last-child E:first-of-type E:on ...
- div样式text-align在子元素缩进不规范的情况下,chrome出现的问题(貌似结果是inline-block导致的)
在调css的时候,发现居然有firefox实现效果完整而chrome出现问题的情况: 详细情况:segmentfault1 segmentfault2 全文表达: <html><he ...
- getComputedStyle的应用
后面有例子,所以把HTML,CSS样式写在前面 HTML结构: <div id="myDiv" style="background-color: lightseag ...