数据库抽象层PDO
2016-05-16 13:37
316 查看
通过数据库抽象层PDO可以访问多个数据库
我们在预处理时可以设置参数,然后给参数绑定值,但这种方法太复杂,不推荐使用,了解即可。例如:
我们可以用数组自动绑定参数,例如:
我们也可以将提交过来的值作为数组去执行SQL语句,这样在添加或修改数据的时候会非常方便。例如:
先做一个简单的添加页面:
再做一个处理页面:
我们可以将PDO做成方法封装在数据库类里面,使之更加完善。
![](https://images2015.cnblogs.com/blog/904015/201605/904015-20160516133508482-1568183296.png)
//数据库抽象层PDO //造DSN:驱动名:dbname=数据库名;host=服务器地址 $dsn = "mysql:dbname=mydb;host=localhost"; //造PDO对象 $pdo = new PDO($dsn,"root","xiao8888"); //写SQL语句 $sql = "select * from Info"; //执行SQL语句 //我们不这样执行,我们用预处理 //$v =$pdo->query($sql); //返回的对象比较特殊,可以用循环遍历 //预处理:先把SQL语句放到服务器上等待我们给他指令去执行 //准备一条SQL语句 $stm = $pdo->prepare($sql); //执行准备好的SQL语句 if($stm->execute()) { //1.逐行取数据 var_dump($stm->fetch()); //2.取所有数据 var_dump($stm->fetchAll()); //包含关联数组与索引数组 var_dump($stm->fetchAll(PDO::FETCH_ASSOC)); //返回关联数组 var_dump($stm->fetchAll(PDO::FETCH_NUM)); //返回索引数组 var_dump($stm->fetchAll(PDO::FETCH_OBJ)); //返回对象 //3.取某一列 var_dump($stm->fetchColumn(1)); //4.返回对象 var_dump($stm->fetchObject()); } else { echo "执行失败!"; }
我们在预处理时可以设置参数,然后给参数绑定值,但这种方法太复杂,不推荐使用,了解即可。例如:
//造对象 $dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","xiao8888"); //写SQL语句,参数用?或者字符串代替 $sql= "insert into Nation vlaues(?,?)"; //问号绑定的是索引数组 $sql= "insert into Nation vlaues(:code,:name)";//字符串绑定的是关联数组 //预处理 $stm = $pdo->prepare($sql); //给参数绑定值 太复杂,不推荐 $stm->bindParam(1,$code);//索引数组 $stm->bindParam(2,$name); $stm->bindParam("code",$code,PDO::PARAM_STR);//关联数组 $stm->bindParam("name",$name,PDO::PARAM_STR); $code = "p007"; $name = "回族"; //执行 if($stm->execute()) { echo "添加成功!"; } else { echo "添加失败!"; }
我们可以用数组自动绑定参数,例如:
//造对象 $dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","xiao8888"); //写SQL语句,参数用?或者字符串代替 $sql= "insert into Nation vlaues(?,?)"; //问号绑定的是索引数组 $sql= "insert into Nation vlaues(:code,:name)";//字符串绑定的是关联数组 //预处理 $stm = $pdo->prepare($sql); //造数组 $attr = array("n006","藏族"); $attr = array("code"=>"n006","name"=>"藏族"); //执行 if($stm->execute($attr)) { echo "添加成功!"; } else { echo "添加失败!"; }
我们也可以将提交过来的值作为数组去执行SQL语句,这样在添加或修改数据的时候会非常方便。例如:
先做一个简单的添加页面:
<form action="Add.php" method="post"> <input type="text" name="code" /> <input type="text" name="name" /> <input type="submit" value="添加" /> </form>
再做一个处理页面:
<?php //造对象 $dsn = "mysql:dbname=mydb;host=localhost"; $pdo = new PDO($dsn,"root","xiao8888"); //写SQL语句 $sql = "insert into Nation values(:code,:name)"; //预处理 $stm = $pdo->prepare($sql); //执行 if($stm->execute($_POST)) { echo "添加成功!"; } else { echo "添加失败!"; }
我们可以将PDO做成方法封装在数据库类里面,使之更加完善。
<?php class DB { public $host="localhost"; //服务器地址 默认值为localhost public $uid="root"; //数据库用户名 默认值为root public $pwd="123"; //数据库密码 默认值为123 /*数据库抽象层PDO,可以从其他驱动访问数据库 参数: $sql: SQL语句 $type: SQL语句类型,默认为0,代表查询语句,1代表其他语句 $qdm: 驱动名,默认为mysql $db: 数据库名,默认为mydb*/ public function QueryPDO($sql,$type=0,$qdm="mysql",$db="mydb") { //1.造DSN $dsn="$qdm:dbname=$db;host=$this->host"; //2.造PDO对象 $pdo=new PDO($dsn,$this->uid,$this->pwd); //3.预处理 //准备一条SQL语句 $stm =$pdo->prepare($sql); //执行SQL语句 $stm->execute(); if($type==0) { return $stm->fetchAll(); } else { return $stm->execute(); } } }
![](https://images2015.cnblogs.com/blog/904015/201605/904015-20160516133508482-1568183296.png)
![](https://images2015.cnblogs.com/blog/904015/201605/904015-20160516133514982-1598826481.png)
相关文章推荐
- 程序猿都该知道的MySQL秘籍
- Oracle 软件及静默安装数据库
- django访问sqlserver2000——使用django-pyodbc
- Mysql数据库事务在jdbc中的用法
- 用mycat做读写分离:基于 MySQL主从复制
- 使用Jedis 访问redis集群遇到的两个小问题
- 嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
- MySQL客户端程序及一些使用小工具介绍
- Linux下Oracle GoldenGate(OGG)的配置
- MongoDB的那些坑
- 【sql server】解决 com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'.
- 嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
- CentOS 6.5 下MySQL 5.7.12主从复制架构配置记录
- plsql、dblink连接Oracle数据库长时间空闲后自动断开及远程终端连接linux空闲超时后自动断开问题
- 实战~REDHAT 6.5 X64上安装ORACLE双机(ROSE-HA9.0)
- oracle 创建dblink
- MyBatis主流程分析之(三)-准备SQL语句和参数替换、执行
- mysql的启动
- 嗅探、中间人sql注入、反编译--例说桌面软件安全性问题
- 数据库查询优化——Mysql索引