php 之 PDO数据访问抽象层(0513)
PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口。
PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,
基于数据库使用的安全性,因为后者欠缺对于SQL资料隐码的防护。
一、PDO连接数据库:
1.造DSN,定义数据源: 驱动名:dbname=数据库名;host=服务器地址
$dsn="mysql:dbname=mydb;host=localhost";
2.造PDO对象:
$pdo=new PDO($dsn."root","");
3.写SQL语句:
$sql="select * from Info";
4.执行SQL语句:
4.1 用query(),这种不常用,仅作了解。
$v=$pdo->query($sql);
//返回的对象比较特殊,可以直接用循环遍历:
foreach ($v as $a)
{
echo $a[0];
}
4.2 预处理,先把SQL语句放到服务器上等待我们给它指令去执行
//准备一条SQL语句:
$stm=$po->prepare($sql);
//执行准备好的SQL语句,成功返回true,失败返回false
if($stm->execute())
{
//输出方式:
//1.逐行取数据:
$stm->fetch();
里面可以写参数
//
var_dump($stm->fetch(PDO::FETCH_ASSOC));//关联数组
//
var_dump($stm->fetch(PDO::FETCH_BOTH));//都有
//
var_dump($stm->fetch(PDO::FETCH_NUM));//索引数组
//2.取所有的数据,里面也可以写参数,同上:
$stm->fetchAll();
//3.取某一列,括号里面是索引:
$stm->fetchcolumn(1);
//4.返回对象:
$stm->fetchObject();
}
else
{
echo "执行失败!";
}
二、修改SQL语句,添加数据:
$dsn="mysql:dbname=mydb;host=localhost";
$pdo=new PDO($dsn,"root","");
1.方法一:直接使用添加的SQL语句
$sql="insert into nation values ('p0001','张三')";
$stm=$pdo->prepare($sql);
if($stm->execute())
{
echo "执行成功";
}
else
{
echo "执行失败";
}
2.方法二:用?来代替参数,然后给参数绑定值(方法有些麻烦,一般不用)
//用?来代替:
$sql="insert into nation values (?,?)";
$stm=$pdo->prepare($sql);
//给参数绑定值:
绑定值方法一:索引数组
$stm->bindParam(1,$code);
$stm->bindParam(2,$name);
$code = "p100";
$name = "回家";
绑定值方法二:关联数组
$stm->bindParam("code",$code,PDO::PARAM_STR);
$stm->bindParam("name",$name,PDO::PARAM_STR);
$code = "p102";
$name = "回家";
if($stm->execute())
{
echo "执行成功";
}
else
{
echo "执行失败";
}
3.方法三:数组方式
$sql = "insert into Nation values(:code,:name)";
$stm=$pdo->prepare($sql);
//用数组方式来添加数值:
方式一:索引数组
$attr = array("p101","很快");
方式二:关联数组
$attr = array("code"=>"p103","name"=>"shj");
if($stm->execute($attr))
{
echo "添加成功";
}
else
{
echo "添加失败";
}
4.方式四:$_POST,用表单的方式。
//可另建一个页面建个表单
<form action="test1.php" method="post">
<input type="text" name="code" />
<input type="text" name="name" />
<input type="submit" value="添加" />
</form>
$dsn="mysql:dbname=mydb;host=localhost";
$pdo=new PDO($dsn,"root","");
$sql = "insert into Nation values(:code,:name)";
$stm=$pdo->prepare($sql);
if($stm->execute($_POST))
{
echo "添加成功";
}
else
{
echo "添加失败";
}
php 之 PDO数据访问抽象层(0513)的更多相关文章
- PDO数据访问抽象层
PDO数据访问抽象层: 我们使用的mysqli是针对mysql这个数据库扩展的一个类,如果要用到别的数据库的话就可以用PDO来做 1.操作数据库 先来代码 <!--PDO--> <! ...
- PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05
之前所学的数据访问都是用mysqli做成类来访问的,但是mysqli这个类只是针对mysql这个数据库的:那么如果访问其他类型的数据库呢? 那么这就用到了PDO(数据访问抽象层). 一.关于PDO基本 ...
- PHP中关于PDO数据访问抽象层的功能操作
PDO:数据访问抽象层 具有三大特点: 1.可以访问其它数据库 所有数据库都可以 2.具有事务功能 3.带有预处理语句功能(防止SQL注入攻击) 实例操作代码如下: <?php //1.造PD ...
- PDO数据访问抽象层(上)
PDO比MySQLi功能强大 PDO可以访问MySQL及其它数据库 一.造对象 <?php $dsn = "mysql:dbname = crud;host = localhost&q ...
- PDO 数据访问抽象层
1.操作其它数据库 (1)造对象 $dsn = "mysql:dbname=test3;host=localhost"; //数据源:两个参数:数据库驱动,链接数据库 $pdo = ...
- 5月13 PDO数据访问抽象层
方法1:较简单的 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- PDO数据访问抽象层(下)
PDO两大功能 一.事务功能 PDO的事务功能主要控制好几条sql语句同时成功或者同时失败(当其中一条SQL语句有错误时,同时好几条一起失败),失败时可以回滚操作 1.造对象 <?php $ds ...
- php PDO:数据访问抽象层
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- PDO:数据访问抽象层
<?php //PDO:数据访问抽象层 //带有事务功能: //dsn:数据源 $dsn="mysql:host=localhost;dbname=aaas"; //造pdo ...
随机推荐
- java获取当前时间
/////////////////获取时间方法一////////////////////////////// java.util.Date uDate=new java.util.Date(); Sy ...
- TCP 的那些事儿(转载)
无论是PC客户端开发还是移动开发,或是Web开发, 网络编程都是很重要的一块, 深入理解TCP/IP和HTTP协议是一个优秀程序员的必备技能.看到酷壳老大正好写了篇相关文章, 正好拿来学习, 转自 h ...
- WIN7笔记本显示连接不可用
如图所示,找不到任何无线网络 解决方法: 不小心把无线关掉而已,笔记本键盘上F5~F12找看看有没有无线标志,有的话要先按下 Fn键不放,再按下那个有无线标志的Fn键.
- Java枚举7常见种用法
DK1.5引入了新的类型——枚举.在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便. 方法/步骤 用法一:常量 在JDK1.5之前,我们定义常量都是:publicstaticfianl. ...
- 常用JS模板
var _win, _doc, _stt, _do = document.domain, _arr = _do.split("."); function _st() { try { ...
- android 解析json数据格式
json数据格式解析我自己分为两种: 一种是普通的,一种是带有数组形式的: 普通形式的:服务器端返回的json数据格式如下: {"userbean":{"Uid" ...
- 线段树求逆序数方法 HDU1394&&POJ2299
为什么线段树能够求逆序数? 给一个简单的序列 9 5 3 他的逆序数是3 首先要求一个逆序数有两种方式:能够从头開始往后找比当前元素小的值,也能够从后往前找比当前元素大的值,有几个逆序数就是几. 线段 ...
- 第12届北师大校赛热身赛第二场 A.不和谐的长难句1
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php? pid=17121 2014-04-25 22:59:49 不和谐的长难句1 Time Limit: ...
- UVA 714 Copying Books 最大值最小化问题 (贪心 + 二分)
Copying Books Before the invention of book-printing, it was very hard to make a copy of a book. A ...
- 最新的四款国外VPN,免费稳定,可以看国外网站的
tyle="margin-top:20px; margin-right:0px; margin-bottom:0px; margin-left:0px; font-family:Arial; ...