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 ...
随机推荐
- 从客户端(xxxxxxxxxxxxxxxxxxxxxx)中检测到有潜在危险的 Request.Form 值。
在项目中用到了富文本编辑器,当将编辑器中的值从视图传递到控制器时,控制器就会向浏览器返回“从客户端(xxxxxxxxxxxxxxxxxxxxxx)中检测到有潜在危险的 Request.Form 值.” ...
- MVC 中集成 AngularJS1
在 ASP.NET MVC 中集成 AngularJS(1) 介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 R ...
- Linux_ERROR 1045 (28000): Access denied for user 'root'@'localhost'
MySQL生成了root用户的随机密码(如下截图所示),并将这个随机密码放置在/root/.mysql_secret中.并且强制在第一次登陆时修改root用户的密码.Mysql 5.6及以后版本出处于 ...
- 复杂事件处理引擎—Esper 处理模型
1.esper的处理模型是持续性的——根据statement中事件流(event stream).视图(views).过滤器(filters)等的选择,esper引擎一旦处理事件数据,就会变更stat ...
- favicon支持的图片格式
为网站设置favicon有两种方式: 1.网站根目录下放置名为favicon.ico的图片,浏览器就会自动获取: 2.在页面中通过<link rel="shortcut icon&qu ...
- MongoDB insert/update/one2many案例
以博文与评论为例,博文有标题内容,对应多个评论,评论有评论人.评论内容等. ()插入一条博文: db.blog.insert( {','title':'this is blog title1','co ...
- 游览器保存密码和自动填充密码的困惑 (browser save password and auto fill password )
原文 refer : http://www.cnblogs.com/happyfreelife/p/4240100.html 当一个带有username and password 的表单被提交, 游览 ...
- 计蒜客 444 / xtuoj 1024 京东的物流路径(并查集+离线lca)或者 (点分治)
题意:一颗树,定义一条路径的权值等于路径的边权之和,需要求这颗树所有路径中权值的最大值 思路: 考虑到路径权值与点权的最值有关,而最值的问题通常可以通过排序就行处理,于是想到先把点权排序. 容易看出如 ...
- HDU-1428(记忆化搜索)
Problem Description LL 最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于长时间坐在电脑边,缺乏运动.他决定充分利用每次从寝室到机房的时间,在校园里散散步.整个HDU 校园呈方 ...
- SRM 600 DIV1
A 按位讨论,取最小值; B 数据范围不大,首先要确定枚举角度; 状压枚举palindromes的列比较科学; 列确定后,目标就是求获得rcnt行的最小代价: dp[i][cnt]表示扫描到第i行,已 ...