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 ...
随机推荐
- C#中struct与class的区别详解
转自:http://blog.csdn.net/justlovepro/archive/2007/11/02/1863734.aspx 有这么几点不同: 1.struct 是值类型,class是对象类 ...
- 限制对比度自适应直方图均衡(Contrast Limited Adaptive histgram equalization/CLAHE)
转自:http://www.cnblogs.com/Imageshop/archive/2013/04/07/3006334.html 一.自适应直方图均衡化(Adaptive histgram eq ...
- SQLiteDatabase里面的简单操作数据库的方法
1.使用insert方法插入记录SQLiteDatabase的insert方法的签名为long insert(String table,String nullColumnHack,ContentVal ...
- Altium Designer summer 9 布线 - 差分对布线
差分信号系统是采用双绞线进行信号传输的,双绞线中的一条信号线传送原信号,另一条传送的是与原信号反相的信号.差分信号是为了解决信号源和负载之间没有良好的参考地连接而采用的方法,它对电子产品的干扰起到固有 ...
- Keil C51对同一端口的连续读取方法
C语言是当前举世公认的高效简洁而又非常贴近硬件的编程语言之一.将C语言向单片机MCS-51上的移植始于2O世纪8O年代的中后期,经过近1O年的发展,C语言克服了产生代码过长.运行速度较慢的缺点,并且由 ...
- [Operationg System Labs] 我对 Linux0.00 中 boot.s的理解和注释
(如有错误请立即指正,么么哒!) ! boot.s!! It then loads the system at 0x10000, using BIOS interrupts. Thereafte ...
- Intellj Idea 2016.1.3的使用
Intellj Idea 2016.1.3的使用:http://blog.csdn.net/bleachswh/article/details/51811055 极客学院教程:http://wiki. ...
- [Angular 2] Using Promise to Http
You can also use Promise for http: So for the service, you need to call toPromise() method: getVehic ...
- VS2010调试小技巧
在VS下做开发的时候我们进行调试的时候路径是这个样子的:http://localhost:端口号/项目名称/index.aspx 但是发布到服务器上面的时候却是这个样子的:http://www.xxx ...
- RPC 实现
PC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. RPC 可基于 HTTP 或 TCP 协议,Web Servic ...