PDO知识
PDO:
一、含义: 数据访问抽象层
二、作用 :通过PDO能够访问其它的数据库
三、 用法:
1.造对象
①$dsn="mysql:dbname=zz;host=localhost";
② $pdo = new PDO($dsn,"root","123");
2.执行SQL语句
① $pdo -> exec(): 用来处理非结果集的,返回影响的行数
② $pdo -> query() :用来处理有结果集的语句
四、预处理
①$stmt = $pdo -> prepare(SQL语句) : 将SQL语句放到服务器上等待执行
②$stmt -> execute(); :执行准备好的SQL语句
③SQL语句中参数用?代替
Ⅰ. insert into users(name, pass, age, sex, email) values(?, ?, ?, ?, ?)
Ⅱ. $stmt -> bindParam(1, $name); -> 将变量绑定给参数
Ⅲ. $name = "admin"; -> 给变量赋值
Ⅳ. $stmt -> execute(); -> 执行
Ⅴ. $stmt -> execute(array("meizi", '123456', 18, 'nv', 'aa@bb.com')); -> 简单方法(推荐)
④SQL语句中参数用字符串代替
Ⅰ. insert into users(name, pass, age, sex, email) values(:name, :pass, :age, :sex, :email)
Ⅱ. $stmt -> bindParam("name", $name, PDO::PARAM_STR); -> 将变量绑定给参数
Ⅲ. $name = "admin"; -> 给变量赋值
Ⅳ. $stmt -> execute(); -> 执行
Ⅴ. $stmt -> execute(array("name"=>"feng", "pass"=>"abc123#", "age"=>28, "sex"=>"nan", "email"=>"aaa@bbb.com")); -> 简单方法(推荐)
<body> <?php
//1.造对象、执行sql语句
$dsn = "mysql:dbname=text_zuoye;host=localhost"; $pdo = new PDO($dsn,"root","123");
$sql = " update nation set name ='兽族' where code ='n004'"; $attr = $pdo->exec($sql);//可以执行增删改
//2.事物功能
$dsn = "mysql:dbname=text_zuoye;host=localhost"; $pdo = new PDO($dsn,"root","123");
//设置异常模式:作用是如果出现错误,不出现错误信息,抛个异常出来
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//写sql语句
$sqla = "insert into nation values('n005','人族')"; $sqlb = "insert into nation values('n006','精灵族')";
//执行sql语句:试着执行两条语句,如发现异常,抓住,不交给php,人为处理
try { $pdo->exec($sqla); $pdo->exec($sqlb); }
catch(PDOException $e)//抓住异常之后,自己出一个信息,如果返回一个异常,catch抓住之后,异常保存在变量$e里面,通过$e调用一个方法:$e->getMessage()来获取错误信息,如果错误,可以echo"友好信息" { $e->getMessage(); } /*final//无论try里面的信息是否出错,都要执行final里面的内容 { }*/
//如何启动事物
try { $pdo->beginTransaction();
//启动事物(开始)
$pdo->exec($sqla);//中间所有代码都是事物
$pdo->exec($sqlb);
$pdo->commit();//提交事务,如果发现有错,抛异常(结束) }
catch(PDOException $e) { $pdo->rollBack();//如果有错误,执行回滚,两条语句同时执行,如果$sqla执行成功,且加入数据库,但是$sqlb不成功的话,catch抓住,执行回滚操作,加上的$sqla删除,可以让程序更加安全 //$e->getMessage();//如果没有错误,执行此语句 } ?>
<?php //3.防止注入功能,分两次给数据例如:第一次给$sql='select *from nation where code = ''',第二次给'n001' $dsn = "masql:dbname=text_zuoye;host=localhost"; $pdo = new PDO($dsn,"root","2786802");
//?占住位置,学名是预处理语句 $sql = " insert into nation values(?,?)";
//准备sql语句,返回一个statement对象 $st = $pdo->prepare($sql);
//绑定参数方法一: $st->bindParam(1,$code);//1是索引,$code是一个变量名 $st->bindParam(2,$name);
//给变量赋值,在绑定参数上边或者下边赋值都行 $code="n007"; $name = "矮人族";
//提交执行,不用给sql语句,已经传过去了,布尔型,成功true,失败false $st->execute();
//绑定参数方法二: $attr = array("n007","矮人族"); $st->execute($attr);
//预处理语句里面用?占位的,给数组的时候要给索引数组,给的数据顺序要对应起来
//name占住位置,学名是预处理语句 $sql = " insert into nation values(:code,:name)";
//准备执行 $st = $pdo->exec($sql);
//绑定参数 方法一: $st->bindParam(":code",$code,PDO::PARAM_STR);//指定¥code必须为字符串 $st->bindParam(":name",$name,PDO::PARAM_STR);
$code = "n009"; $name = "狼族";
//执行 $st->execute();
//绑定参数 方法二: $attr = array("code"=>"noo9","name"=>"虫族");
//PDO查询: $sql = "select * from nation "; $st = $pdo->prepare($sql); $st->execute(); var_dump($st->fetchAll()); $st->fetch();//返回一个关联加索引的数组 $st->fetchAll()//返回一个关联加索引的数组 ?> </body>
PDO知识的更多相关文章
- pdo知识总结
PDO 用了这么久了这里抽时间总结下: pdo (php data object) 是php5 新出来的支持 mysql 操作的一个功能.用其可代替mysqli扩展.因为是php自带的.所以我觉得效率 ...
- 封装PDO函数
funPDO.php <?php /** * @title: 封装PDO函数 * * @Features: * 1. 封装 SELECT ,INSERT,DELETE,UPDATE 操作 @do ...
- PHP基础知识之————PDO预处理语句
转载处:http://www.cnblogs.com/xiaohuochai/p/6133353.html 定义 在生成网页时,许多PHP脚本通常都会执行除参数之外,其他部分完全相同的查询语句,针对这 ...
- PDO基础知识
使用PDO之前首先开启PHP的PDO扩展,方法见百度. PDO连接数据库的方式有三种 1.通过参数的形式连接数据库 (推荐) //通过参数形式连接数据库 try{ $dsn = 'mysql:host ...
- PDO 基础知识
PDO: 一.含义: 数据访问抽象层 二.作用 :通过PDO能够访问其它的数据库 三. 用法: 1.造对象 ①$dsn="mysql:dbname=zz(数据库名);host=localho ...
- PDO 小知识
一.前言 PDO(PHP Data Object)提供了一个通用接口访问多种数据库,即抽象的数据模型支持连接多种数据库. PDO扩展为PHP定义了一个访问数据库的轻量.持久的接口.其本身并不能实现任何 ...
- PHP中PDO的配置与说明
住[PDO是啥] PDO是PHP5新加入的一个重大功能,因为在PHP5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么php_mysql.dll.php_pgsql.dll ...
- PHP5中PDO的简单使用
PHP5中PDO的简单使用 标签: php数据库mysql扩展extensionexception 2012-05-06 10:27 27753人阅读 评论(0) 收藏 举报 分类: PHP(6) ...
- 使用PDO持久化连接
无论是何种编程语言,几乎都要经常与各种数据库打交道.不过,众所周知的是,在程序与数据库之间建立连接是一件比较耗费资源的事情,因此编程技术领域的许多专家.前辈们就设想并提出了各种解决方案,以减少不必要的 ...
随机推荐
- js:数据结构笔记11--排序算法(1)
基本准备: function CArray(numElems) { this.dataStore = []; this.pos = 0; this.numElems = numElems; this. ...
- 学习NGUI前的准备NGUI的相关信息
学习NGUI前的准备NGUI的相关信息 第1章 学习NGUI前的准备 NGUI是Unity最重要的插件,在Unity资源商店(Asset Store)的付费排行榜中始终名列前茅,如图1-1所示.本章 ...
- GridView点击排序
快速预览:GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠 ...
- BZOJ4373 : 算术天才⑨与等差数列
设$pre[i]$表示第$i$个数上一次出现的位置,$d[i]=abs(a[i]-a[i+1])$. 用线段树维护区间内$a$的最小值.最大值,$pre$的最大值以及$d$的$\gcd$. 对于询问$ ...
- http://developer.51cto.com/art/200512/15883.htm
http://developer.51cto.com/art/200512/15883.htm
- 转载 模板整理 by gc812
http://www.cnblogs.com/gc812/p/5779789.html 上友链,不盗版 CC BY-NC-SA
- 蒟蒻修养之tc蓝名计划
开一个新坑......(听说tc是智商高的人才能玩的QAQ显然我是被屠的... 1 [645DIV2]这个能说是裸模拟吗... 弃坑= =做了一些题感觉没必要放上来了= =等div1先吧....... ...
- 【POJ】3255 Roadblocks(次短路+spfa)
http://poj.org/problem?id=3255 同匈牙利游戏. 但是我发现了一个致命bug. 就是在匈牙利那篇,应该dis2单独if,而不是else if,因为dis2和dis1相对独立 ...
- BZOJ3994: [SDOI2015]约数个数和
Description 设d(x)为x的约数个数,给定N.M,求 Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. O ...
- erlang-jiffy 安装手记
今天安装 erlang-jiffy 把握逼疯,不过最后还是成功了. 错误避免: rebar只能再英文目录下运行,如果编译jiffy的目录中有中文或其它unicode字符,将会出错 从git relea ...