PDO 基础知识
PDO: 一、含义: 数据访问抽象层 二、作用 :通过PDO能够访问其它的数据库 三、 用法: 1.造对象 ①$dsn="mysql:dbname=zz(数据库名);host=localhost(本地IP地址)";
root是代表使用什么数据库的名,后面跟着是密码
② $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之前首先开启PHP的PDO扩展,方法见百度. PDO连接数据库的方式有三种 1.通过参数的形式连接数据库 (推荐) //通过参数形式连接数据库 try{ $dsn = 'mysql:host ...
- MySQL_基础知识
-----基础知识 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 2.什么是关系型数据库.主键,外键,索引分别是什么? 关系型数据 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
随机推荐
- JavaScript之Date日期对象扩展
各种时间加减 收藏起来以备后用 //名称:日期加法函数 //参数:part(year.month.day.hour.minute.second.millisecond) //返回:Date对象 Dat ...
- VMWare虚拟机中CPU过高的问题
在VMWare中按默认方式创建的虚拟机,安装的Windows Server 2016 x64操作系统.可打开一个稍微大一点的程序CPU就飙到90%以上,自然整个系统操作起来很卡. 在VMWare中看到 ...
- JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践
任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...
- JS 遍历JSON中每个key值
JS 遍历JSON中的每个key值,可以按键值对进行存储: var myVar = { typeA: { option1: "one", option2: "two&qu ...
- SNF开发平台WinForm-审核流使用方法样例
一.效果如下: 二.如何实现 1.程序的数据表设计规范,参考<09.SNF-C#编程规范V1.5.docx>文件. 2.程序操作程序 2.1.在程序页面拖拽控件 2.2.程序的Load事件 ...
- CS页面-Asp.net+Spring.Net.Framework--SNF快速开发平台3.0
SNF快速平台有BS和CS两种,之前介绍了BS界面,下面发几张图看一下CS界面看看是什么样的 这是SNF快速开发平台的CS框架 1.有多种主页和登录页面. 2.多种页面风格 下面就先先看看页面显示的效 ...
- CSS中的继承
继承:子元素继承父元素的样式,但是并不是所有属性都是默认继承的. 通过文档中的 inherited:yes 来判断属性是否可以继承,关于继承可以参见css的继承关键字: 一.无继承性的属性 1.dis ...
- 国内AR行业现状研究之百度的AR
AR(Augmented Reality),中文翻译增强现实.按我原来的知识体系,VR/AR的技术构成是相同的,只是追求的方向不同.VR是虚拟笼罩现实.让虚拟就是现实:AR则让虚拟进入现实.二者最终看 ...
- android( java) 处理 null 和 预防空指针异常(NullPointerException) 的一些经验。
概述: 在实际编码中总是会遇到 空指针异常 ,本文总结了一些处理空指针的个人经验. 原则: 尽早的检查,尽早的失败. 比如: 通过intent传参到新的目标 activity,而且一定需要这个参数,那 ...
- debian/deepin 15.3 15.4安装jdk 1.7 (或jdk 7),配置默认环境
一.前言 Deepin 15.3是基于Debian开发的,安装jdk 1.7有所不同,默认是openjdk-8-jdk,而我们玩一些编译需要的是jdk 7. 所以本文给出安装JDK 7的教程. Dee ...