php pdo学习笔记
2015-09-04 22:48
597 查看
pdo 数据库抽象层,是对各种数据库在使用上的一种抽象,使得php代码不再依赖于特定的数据库类型。
使用方法一:
首先生成对象:
然后可以直接调用query方法执行查询,返回的是一个数组
这是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方式):
跟前面区别主要在于查询的那一步。
结果:
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));
在查询前可以绑定参数,查询后可以将结果绑定给变量。
11 人来疯 2015-08-14 拳打南山养老院,脚踢北海幼儿园
防止注入:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
由数据库执行转义,charset设置成与数据库相同。
使用方法一:
首先生成对象:
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设置成与数据库相同。
相关文章推荐
- 用php写一个取数据的接口
- 文章标题
- CuteFTP、FlashFXP、FileZilla 基本应用比较
- laravel 5 blade
- PHP中的错误与异常
- PHP图标类库 - JpGraph使用详解
- PHP中发送邮件的几种方法总结
- ***php解析html类库simple_html_dom
- 关于editplus语法高亮和自动补全
- php使用post动态选择头像和js事件动态改变头像
- LAMP php5.4编译
- php通过判断来源主机头进行防盗链
- php模拟数据库常用操作效果
- php变量-单引号不编译,双引号编译
- An Isolated DAC Using PWM Output
- php实例-set和get方法
- 阿里云 使用SFTP方式传输文件
- php这是一个随机打印输出字符串的例子
- php实现ocr文字识别
- PHP循环遍历倒金字塔