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); ?>

  

最新文章

  1. 多站点配置apache服务器
  2. Redis、Memcache和MongoDB的区别(转)
  3. android开发--ormlite
  4. IPv6测试环境
  5. ACM/ICPC 之 BFS(离线)+康拓展开(TSH OJ-玩具(Toy))
  6. 【网站运营】网站被K的原因大总结
  7. 会话控制:SESSION,COOKIE
  8. 6、android开发中遇到的bug整理
  9. KIP-32 Add timestamps to Kafka message
  10. hdu 2459 (后缀数组+RMQ)
  11. react中createFactory, createClass, createElement分别在什么场景下使用,为什么要这么定义?
  12. 常用MSSQL语句
  13. SpringBoot后台接收前台的字符串数据
  14. 《程序设计入门——C语言》翁恺老师 第一周编程练习记录
  15. 高精度加法——经典题 洛谷p1601
  16. IDEAL启动项目的时候报java.lang.NoClassDefFoundError: javax/servlet/Filter错误
  17. 实现手写数字识别(数据集50000张图片)比较3种算法神经网络、灰度平均值、SVM各自的准确率—Jason niu
  18. Luogu 3620 数据备份 - Set
  19. Sql Server 2000/2008 用Sql导出数据表结构(包括注释)到Excel
  20. Oracle EM错误,java.lang.Exception: Exception in sending Request :: null 分类: Oracle 2015-07-08 21:24 44人阅读 评论(0) 收藏

热门文章

  1. 阿里巴巴直播内容风险防控中的AI力量
  2. 和 Thrift 的一场美丽邂逅
  3. ASP.NET Core中如影随形的&rdquo;依赖注入&rdquo;[下]: 历数依赖注入的N种玩法
  4. JS继承类相关试题
  5. C++随笔:.NET CoreCLR之GC探索(1)
  6. 云瓣影音网站&amp;&amp;微信端(已开源)
  7. Java进击C#——前言
  8. 子类继承父类时JVM报出Error:Implicit super constructor People() is undefined for default constructor. Must define an explicit constructor
  9. PHP static静态属性和静态方法
  10. IIS8 使用FastCGI配置PHP环境支持 过程详解