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 ...
随机推荐
- android使用apktool反编译出现Input file (d:\t) was not found or was not readable
Input file (d:\t) was not found or was not readable 出现这个错误是因为apktool压缩包下载错误,我是下成首页的那个压缩包了 正确下载地址:htt ...
- Android系统源代码下载
最近,我在研究android,所以想下载android源代码看看.按照http://source.android.com/source/downloading.html 这个页面所提示的步骤在下载源代 ...
- Android判读是否安装了某一款APP
/** * @Title: isAvilible * @Description: 断手机已安装某程序 * @param @param context * @param @param packageNa ...
- no-cache、max-age=0、must-revalidate区别
之前深入搜索了多次,根据stackoverflow的回答进行一些总结(http://stackoverflow.com/questions/18148884/difference-between-no ...
- 利用dbms_backup_restore恢复数据库
测试环境:OEL+11.2.0.1 实例名:orcl2 DBID:1336959433 场景:Oracle数据库的存储坏了,数据文件和控制文件全部丢失,只有数据文件的备份集,且备份集中无控制文件.(当 ...
- elasticsearch 重启后,需要的操作
如果elasticsearch 集群挂了,请勿开启Logstash 同步数据,需等待elasticsearch集群恢复后,在继续写入
- Appnium+python实现手势密码为什么总是报错
最近一直在尝试Appnium实现Android手机自动化测试,一直一直卡在一个点上,那就是手势密码,因为所测应用的手势密码使用的不是单个的imageview实现的手势密码解锁窗,所以只能靠坐标点来定位 ...
- Java继承与清理
[程序实例] import java.util.*; class Characteristic { private String s; Characteristic(String s) { this. ...
- 基于jsp+servlet图书管理系统之后台用户信息删除操作
上一篇的博客写的是修改操作,且附有源码和数据库,这篇博客写的是删除操作,附有从头至尾写的代码(详细的注释)和数据库! 此次删除操作的源码和数据库:http://download.csdn.net/de ...
- 常用JS模板
var _win, _doc, _stt, _do = document.domain, _arr = _do.split("."); function _st() { try { ...