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 ...
随机推荐
- C#获取当前程序运行路径的方法集合
//获取当前进程的完整路径,包含文件名(进程名).string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (. ...
- 转:Delphi 6 实用函数
来自: daocaoren0824, 时间: -- ::, ID: 再给你一份 程序员实用函数 {▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎} {▎ ▎} {▎ 大 ...
- Lambda表达式详解
前言 1.天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西. 2.夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅.据说它是微软自c#1.0后新增的最重要的功能之一 ...
- 使用MonkeyTest对Android客户端进展压力测试
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试. 先来看一条 ...
- solr 查询 实例分析
solr索引查询接口:http://localhost:8080/solr/query 首先了解一下查询参数的含义. q Solr 中用来搜索的查询.可以通过追加一个分号和已索引且未进行断词的字段(下 ...
- html5与css3
Video属性 符号:<video>这里插入视频</video> Drag 和 drop属性 为了使元素可拖动,把 draggable 属性设置为 true: 2. ...
- jQuery Ajax请求(关于火狐下SyntaxError: missing ] after element list ajax返回json,var json = eval("("+data+")"); 报错)
$.ajax({ contentType: "application/x-www-form-urlencoded;charset=UTF-8" , type: &quo ...
- 【SRM】649 t2
题意 一个数列\(A\),数的范围均在\([0, 2^N-1]\)内,求一个\(B\),使得新生成的数列\(C\)中逆序对最多(\(C_i = A_i xor B\)),输出最多的逆序对.(\(|A| ...
- 安装zabbix-3.0.3+nginx-1.10.1+php-5.6.22
好久没有接触监控类的软件了,今天抽空搭建了下最新的版本 首先系统环境 zabbix-server-1 192.168.11.11 centos6.7 mysql-server 192.168 ...
- bootstrap按钮样式
<a class='btn' href='javascript:;'>常规按钮</a> <a class='btn btn-small' href='javascript ...