PHP PDO详解攻略
在这里,有一篇名为php-使用-pdo-存取資料庫一存取步驟與常用功能介紹,感觉比大陆那些大网站们写的好多啦(* ̄︶ ̄)y y,1=^_^)y很好懂呢。
基本上去年在学PHP的时候也写过一篇,PHP 数据库抽象层PDO的使用。
以上基本上是所有的参考文章,我们把PDO分为这样几步吧,这次我也是这么按照步骤做下来的:
- 连接数据库
- 编写SQL语句
- 准备
- 绑定相关值
- 执行
- (如果是查询)获取
那么一步步来吧,数据库连接,是根据这里的示例写的:PHP 连接与连接管理 官方手册
这里直接与到时候后端返回给前端的json状态值相连接,所以$status其实是可以忽略的:
1<?php
2 $dbname = 'sky_microblog';
3 $dbhost = 'localhost';
4 $user = 'root';
5 $password = '';
6
7 $dsn = 'mysql:dbname=' . $dbname . ';host=' . $dbhost . ';';
8
9 $status = 'success';
10 try {
11 $dbh = new PDO($dsn, $user, $password);
12 } catch (PDOException $e) {
13 $status = 'database error';
14 }
15?>
16
这样就创建好了一次连接。
然后开始include这个文件,SQL语句部分开始,之前的那篇文章其实已经有一个近乎完整的示例了,这里就挑几个坑以及几个点说啦,首先是bindParam
和bindValue
的区别,一个是将引用,一个是将值传进去,好了,坑爹的地方到了,请看这里:http://www.laruence.com/2012/10/16/2831.html是不是要大呼卧槽。
其次,我们来看一下这样一段:
1$query = 'SELECT * FROM `sky_contents` ORDER BY id DESC LIMIT :showItem OFFSET :offset';
2
3$stmt = $dbh->prepare($query);
4
5$stmt->bindValue(':showItem', $showItem, PDO::PARAM_INT);
6$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
7
好了,为什么要加PDO::PARAM_INT呢,因为默认是传个字符串进去,啧,然后就完蛋啦,我们需要转换为int,这样传入的才是正确的值。
在execute()中,会返回是否成功执行语句(bool)。如果需要返回最后插入的id,可以使用$dbh->lastInsertId();
,如果你需要的是关联数组,在fetch时选择FETCH_ASSOC,需要普通的数组,那么使用FETCH_NUM,默认是BOTH,剩下的,似乎也没啥了。
评论 (0)