php pdo学习笔记

pdo 数据库抽象层,是对各种数据库在使用上的一种抽象,使得php代码不再依赖于特定的数据库类型。

使用方法一:

首先生成对象:

try{
$pdo =new PDO("mysql:host=localhost;dbname=test;charset=utf8","root","335061");
}catch(PDOException $e){
    echo "错误".$e->getMessage();
}
构造方法中的三个参数第一个为数据库连接时的环境配置,第二个为用户名,第三个为密码。

然后可以直接调用query方法执行查询,返回的是一个数组

$sql="select * from news";
$result=$pdo->query($sql);
$result=$result->fetchAll();


 
 这是print_r($result) 的结果: 

  Array( [0] => Array ( [id] => 10 [title] => 山上有个老和尚 [dates] => 2015-08-14 [contents] => 哎呀哎呀哎呀删了药 ) [1] => Array ( [id] => 11 [title] => 人来疯 [dates] => 2015-08-14 [contents] => 拳打南山养老院,脚踢北海幼儿园 ) [2] => Array ( [id] => 12 [title] => 安卓 [dates] => 2015-08-21 [contents] => 视频播放 ))

这种查询方法跟使用mysql_connect,mysql_query,mysql_fetch系列函数查询没太大区别。

pdo有另外一种查询方法。

使用方法二(prepare方式):

跟前面区别主要在于查询的那一步。

$sql=$pdo->prepare("select * from news where id= ? ");
$sql->bindParam(1,$id);
$id=11;
$row=$sql->execute();

//foreach($sql as $r){
//    print_r($r);
//}<pre name="code" class="php">while($result=$sql->fetch(PDO::FETCH_ASSOC)){
    foreach($result as $k=>$v){
        echo $k."   ".$v."<br>";
    }
}

 结果: 

id 11title 人来疯dates 2015-08-14contents 拳打南山养老院,脚踢北海幼儿园

预处理语句中的?可以用别名方式代替,形如“select * from news whrere id= :id”;

$sql->binParam("id",$id);

在bind那一步,指明$sql中?的值,可以替换成$sql->bindValue(1,1,PDO::PARAM_INT)。

$sql中,?还可以换成:id。相应的$sql->bindParam("id",1,PDO::PARAM_INT)

绑定还可以在$sql->excute()中进行,形如$sql->excute(array(11));

在查询前可以绑定参数,查询后可以将结果绑定给变量。

$sql=$pdo->prepare("select * from news where id= ? ");
$sql->bindParam(1,$id);
$id=11;
$row=$sql->execute();
$sql->bindColumn(1,$id);
$sql->bindColumn(2,$title);
$sql->bindColumn(3,$date);
$sql->bindColumn(4,$contents);
while($result=$sql->fetch()){
    echo $id."  ".$title."  ".$date." ".$contents."<br>";
}
执行结果为

11 人来疯 2015-08-14 拳打南山养老院,脚踢北海幼儿园


防止注入:

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

由数据库执行转义,charset设置成与数据库相同。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值