pdo的使用
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。
PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。
pdo功能:
1.操作其它数据库
2.事务功能
3.防止SQL注入攻击
操作其他数据库:
- //造PDO对象
- $dsn = "mysql:dbname=mydb;host=localhost"; //数据源
- $pdo = new PDO($dsn,"root","123"); //root为连接用户名,123为密码
- //写SQL语句
- $sql = "select * from nation";
- $sql1 = "insert into nation values('n077','数据')";
- //执行,返回的是PDOStatement对象
- $a = $pdo->query($sql); //执行查询
- $a1 = $pdo->exec($sql1); //执行其他语句
- var_dump($a);
- var_dump($a1);
- $arr = $a->fetchAll(PDO::FETCH_BOTH); //遍历输出
- var_dump($arr);
事务功能:
事务:能够控制语句同时成功同时失败,失败时可以回滚:
- $dsn = "mysql:dbname=mydb;host=localhost";
- $pdo = new PDO($dsn,"root","123");
- //设置异常模式
- $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
- try
- {
- //开启事务
- $pdo ->beginTransaction();
- //......中间部分为数据库代码及执行
- //提交
- $pdo->commit();
- }
- catch(Exception $e)
- {
- //抓住try里面出现的错误,并且处理
- //echo $e->getMessage(); //获取异常信息
- echo "失败! ";
- //回滚
- $pdo->rollBack();
- }
- //final()
- //{
- //最终执行,无论以上try代码有没有出错,都会执行
- //}
如果cath()中有失败语句,则回到开启事务时的状态。
防止SQL注入攻击:
索引方法:
- //预处理语句防止SQL注入
- $dsn = "mysql:dbname=mydb;host=localhost";
- $pdo = new PDO($dsn,"root","123");
- //$code = "n005";
- //SQL语句里面需要加占位符 ?
- //$sql = "select * from nation where code=?";
- $sql = "insert into nation values(?,?)";
- //准备执行,返回PDOStatement对象
- $st = $pdo->prepare($sql);
- //调用绑定参数的方法来绑定参数
- //$st->bindParam(1,$code);
- //$st->bindParam(2,$name);
- //$name = "测试1";
- //索引数组
- $attr = array("n006","测试2");
- //执行方法
- $st->execute($attr);
- //$attr = $st->fetchAll();
- //var_dump($attr);
关联方法:
- $dsn = "mysql:dbname=mydb;host=localhost";
- $pdo = new PDO($dsn,"root","123");
- //占位符是字符串
- $sql = "insert into nation values(:code,:name)";
- $st = $pdo->prepare($sql);
- //$st->bindParam(":code",$code,PDO::PARAM_STR);
- //$st->bindParam(":name",$name,PDO::PARAM_STR);
- //$code = "n007";
- //$name = "测试3";
- //关联数组
- $attr = array("code"=>"n008","name"=>"测试4");
- $st->execute($attr);
利用关联方法向数据库添加数据:
新建添加php文件:
- <!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>
- <form action="addchuli.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","123");
- //占位符是字符串
- $sql = "insert into nation values(:code,:name)";
- $st = $pdo->prepare($sql);
- //$st->bindParam(":code",$code,PDO::PARAM_STR);
- //$st->bindParam(":name",$name,PDO::PARAM_STR);
- //$code = "n007";
- //$name = "测试3";
- $st->execute($_POST);
- ?>
pdo的使用的更多相关文章
- 比Mysqli操作数据库更简便的方式 。PDO
下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...
- PHP中PDO事务的使用方法
事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...
- PDO连接mysql数据库
1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...
- PDO概念 分析 练习
PDO 翻译过来叫做数据访问抽象层 它是一个数据访问的层面,实际上是一个类,也就是说所有操作数据库的代码,都是通过这个层面完成的 该图好理解大概就是这样一种模式 现在考虑的是能不能使用同一个类,上层代 ...
- PDO
'PDO'是数据访问抽象层'用mysqli类找到mysqli驱动根据驱动操作mysqli数据库'其他类找到sqlserver驱动根据驱动操作sqlserve数据库'PDO 访问其他数据库 PDO的用法 ...
- 前端学PHP之PDO预处理语句
× 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...
- 前端学PHP之PDO基础操作
× 目录 [1]创建PDO [2]使用PDO [3]事务处理 前面的话 PDO(php data object)扩展类库为php访问数据库定义了轻量级的.一致性的接口,它提供了一个数据库访问抽象层,这 ...
- CANopen学习——PDO
查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html PDO定义: 过程数据对象,用来传输实时数据.因为 ...
- PHP基础之PDO
简介 PDO(PHP Data Object)是指PHP数据对象,它定义了一个轻量级的一致接口来统一操作各种数据库.PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方 ...
随机推荐
- CRC、反码求和校验 原理分析
3月份开始从客户端转后台,算是幸运的进入全栈工程师的修炼阶段.这段时间一边是老项目的客户端加服务器两边的维护和交接,一边是新项目加加加班赶工,期间最长经历了连续工作三天只睡了四五个小时的煎熬,人生也算 ...
- 轻量级“集合”迭代器-Generator
Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...
- 【Win 10 应用开发】应用预启动
所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...
- 使用AWS亚马逊云搭建Gmail转发服务(三)
title: 使用AWS亚马逊云搭建Gmail转发服务(三) author:青南 date: 2015-01-02 15:42:22 categories: [Python] tags: [log,G ...
- javascript中的操作符详解1
好久没有写点什么了,根据博主的技术,仍然写一点javascript新手入门文章,接下来我们一起来探讨javascript的操作符. 一.前言 javascript中有许多操作符,但是许多初学者并不理解 ...
- Java 时间类-Calendar、Date、LocalDate/LocalTime
1.Date 类 java.util.Date是一个"万能接口",它包含日期.时间,还有毫秒数,如果你只想用java.util.Date存储日期,或者只存储时间,那么,只有你知道哪 ...
- 接口--interface
“interface”(接口)关键字使抽象的概念更深入了一层.我们可将其想象为一个“纯”抽象类.它允许创建者规定一个类的基本形式:方法名.自变量列表以及返回类型,但不规定方法主体.接口也包含了基本数据 ...
- js 基础篇(点击事件轮播图的实现)
轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首 ...
- Android Studio —— 创建Menu菜单项
大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:
- Android之数据存储的五种方法
1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...