11月7日下午PHP----PDO访问方式操作数据库
MySQLI是专门访问MySQL数据库的,不能访问其它数据库。PDO可以访问多种的数据库,它把操作类合并在一起,做成一个数据访问抽象层,这个抽象层就是PDO,根据类操作对应的数据库。mysqli是一个类,PDO也是一个类,只不过PDO这个类功能更加强大。
PDO的功能
1.访问不同的数据库
2.自带事务功能。事务是指同时执行几条sql语句,但是其中1条语句出了错无法执行,那么所有的就都执行失败。
3.防止SQL注入攻击。
1.访问不同数据库
下面代码是访问MySQL数据库的,如果访问其它数据库,只需要在造对象中更改数据库驱动mysql,换成其它数据库的驱动。
- <!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>
- <?php
- //PDO的用法
- //1.造对象
- $dsn = "mysql:dbname=text1;host=localhost";
- //mysql是指MySQL数据库的驱动名,加上冒号,冒号后面是数据库的名称。
- //host是服务器的地址,为localhost。
- //如果要使用其它数据库,要更改数据库的驱动名。可以从php手册里面找。
- //写的驱动一定是配好环境的驱动。可以在浏览器地址栏里输入服务器地址localhost查找支持的数据库驱动。
- $pdo = new PDO($dsn,"root","666");
- //参数:1.服务器的地址2.数据库的名称3.服务器密码
- //写sql语句
- $sql = "update nation set name='兽族' where code='n003'";
- //执行sql语句
- //$r = $pdo->exec($sql);//返回受影响的条数
- ?>
- </body>
- </html>
2.事务功能
- <!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>
- <?php
- //1.造对象
- $dsn = "mysql:dbname=text1;host=localhost";
- $pdo = new PDO($dsn,"root","666");
- //设置异常模式,如果吹啊你错误,抛个异常出来。2个参数不要加双引号。
- $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
- //写sql语句
- $sql1 = "insert into nation values('noo5','人族')";
- $sql2 = "insert into nation values('noo6','精灵族')";
- //执行2条sql语句
- try//try代表加事务
- {
- $pdo->beginTransaction();//启动事务
- $pdo->exec($sql1);
- $pdo->exec($sql2);
- $pdo->commit();//提交事务
- }
- catch(PDOException $e)//抓住出现的异常。$e代表抓住的异常,异常保存在$e里面。
- {
- //$e->getMessage();//获取错误信息。
- $pdo->rollBack();//回滚,如果一个地方出现错误,回到总体操作之前。
- }
- ?>
- </body>
- </html>
3.防止注入
(1)占位方式为?
- <!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>
- <?php
- //防止sql注入
- //1.造对象
- $dsn = "mysql:dbname=text1;host=localhost";
- $pdo = new PDO($dsn,"root","666");
- //写sql语句,预处理语句。
- $sql = "insert into nation values(?,?)";//变量先不写,先用?占住位置。先把这条语句发过去。
- //准备sql语句,返回statement对象。
- $st = $pdo->prepare($sql);
- /*//绑定参数
- $st->bindParam(1,$code);//从1开始索引。
- $st->bindParam(2,$name);
- $code="n002";//也可以在前面赋值。
- $name="矮人族";
- //提交执行
- $st->execute();//调用这个方法就可以执行了,括号里面不用给sql语句了,sql语句已经传过去了。
- */
- $attr = array("n007","魔族");//造一个数组,数组里面要和添加的内容对应起来。这2行相当于上面/**/标记的4行内容。
- //提交执行
- $st->execute($attr);//直接把数组放在执行的里面。
- //预处理里面用?占位的,给数组的时候要给索引数组,并且数组里的内容要和要添加的内容对应起来。
- ?>
- </body>
- </html>
(2)占位方式为name
- <!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>
- <?php
- //防止sql注入
- //1.造对象
- $dsn = "mysql:dbname=text1;host=localhost";
- $pdo = new PDO($dsn,"root","666");
- //写sql语句,预处理语句。使用name占位。
- $sql = "insert into nation values(:code,:name)";//前面要加冒号,不加冒号会被当成普通的变量
- //准备执行
- $st = $pdo->prepare($sql);
- /*//绑定参数
- $st->bindParam(":code",$code,PDO::PARAM_STR);//PDO::PARAM_STR表示必须是一个字符串
- $st->bindParam(":name",$name,PDO::PARAM_STR);
- $code="no12";
- $name="狼族";
- //执行
- $st->execute();*/
- $attr = array("code"=>"n025","name"=>"虫族");//name占位,要用关联数组。
- //执行
- $st->execute($attr);
- ?>
- </body>
- </html>
- 4.读取数据
- <!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>
- <?php
- //1.造对象
- $dsn = "mysql:dbname=text1;host=localhost";
- $pdo = new PDO($dsn,"root","666");
- //写sql语句,预处理语句。使用name占位。
- $sql = "select * from nation";//前面要加冒号,不加冒号会被当成普通的变量
- //准备执行
- $st = $pdo->prepare($sql);
- //执行
- $st->execute();
- //读数据
- //var_dump($st->fetch());//输出结果为第一条,可以用while循环全部读取出来。
- //var_dump($st->fetch(PDO::FETCH_ASSOC));//输出的是关联数组
- //var_dump($st->fetch());//输出二维数组
- //var_dump($st->fetch(PDO::FETCH_ASSOC));//输出关联的二维数组
- ?>
- </body>
- </html>
11月7日下午PHP----PDO访问方式操作数据库的更多相关文章
- PDO访问方式操作数据库
mysqli是专门访问MySQL数据库的,不能访问其它数据库.PDO可以访问多种的数据库,它把操作类合并在一起,做成一个数据访问抽象层,这个抽象层就是PDO,根据类操作对应的数据库.mysqli是一个 ...
- 11月15日下午 ajax返回数据类型为XML数据的处理
ajax返回数据类型为XML数据的处理 /*XML:可扩展标记语言 HTML:超文本标记语言 标签:<标签名></标签名> 特点: 1.必须要有一个根 2.标签名自定义 3.对 ...
- 11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情
1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- 11月8日下午Jquery取属性值(复选框、下拉列表、单选按钮)、做全选按钮、JSON存储、去空格
1.jquery取复选框的值 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- 11月6日下午PHP注册审核(审核状态控制登录、可以更改审核状态)
1.创建登录界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- 11月6日下午PHP分页查询(查询结果也显示为分页)
1.先把数据库里所有的数据分页显示在页面,并在显示数据的表格上方加上查询表单. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...
- 11月23日《奥威Power-BI报表集成到其他系统》腾讯课堂开课啦
听说明天全国各地区都要冷到爆了,要是天气冷到可以放假就好了.想象一下大冷天的一定要在被窝里度过才对嘛,索性明天晚上来个相约吧,相约在被窝里看奥威Power-BI公开课如何? 上周奥威公开 ...
- struts2练习时犯的错误(2016年11月4日)
1.Tomcat启动时报错 严重: 文档无效: 找不到语法. at (null:3:8) org.xml.sax.SAXParseException; systemId: file:/F:/Progr ...
- tmux使用——2019年11月20日16:40:15
1.tmux 命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令.用户与计算机的这种临时的交互,称为一次"会话& ...
随机推荐
- 【Windows编程】系列第四篇:使用Unicode编程
上一篇我们学习了Windows编程的文本及字体输出,在以上几篇的实例中也出现了一些带有“TEXT”的Windows宏定义,有朋友留言想了解一些ANSI和Unicode编程方面的内容,本章就来了解和学习 ...
- PPK谈JS笔记第一弹
以下内容是读书笔记,再一次温习JS好书:PPK谈JS window.load=initializePageaddEventSimple('window','load',function(){}) lo ...
- monkeyrunner之录制与回放(七)
monkeyrunner为我们提供了录制 回放的功能. 录制与回放使用原因:实际项目,需求变更频繁,且测试任务多,我们没有足够时间去写测试脚本,这是就可以进行录制脚本,然后通过回放,跑完需要的流程. ...
- CSS/CSS3常用样式小结
1.强制文本单行显示: white-space:nowrap; 多行文本最后省略号: display: -webkit-box; -webkit-line-clamp:2; overflow: hid ...
- POJ3070 Fibonacci[矩阵乘法]
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13677 Accepted: 9697 Descri ...
- 5.bootstrap练习笔记-巨幕和流体布局
bootstrap练习笔记-巨幕和流体布局 1.在bootstrap中 .jumbotron可以设置巨幕效果 2.div.jumnotron自动设置一个黑色的巨幕效果 3.div.container ...
- PAT 1032. 挖掘机技术哪家强(20)
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每行给出一位 ...
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 主管可以看下属的数据
主管可以看下属的数据,这个是经常用到的一个权限,不管是大公司,还是小公司都需要的功能. 通过以下2个方法,可以任意达到想要的效果了,设置简单灵活,还能递归运算下属,有时候简单好用就是硬道理. #reg ...
- StackExchange.Redis 访问封装类
最近需要在C#中使用Redis,在Redis的官网找到了ServiceStack.Redis,最后在测试的时候发现这是个坑,4.0已上已经收费,后面只好找到3系列的最终版本,最后测试发现还是有BUG或 ...
- tomcat7配置虚拟目录
1.tomcat7的安装路径下,D:\Program Files\java\Tomcat 7.0\conf,修改server.xml文件,如图: 在</Host>标签前,添加上图选中部分即 ...