CodeSky 代码之空

随手记录自己的学习过程

PHP PDO详解攻略

2015-03-04 13:41分类: PHP评论: 0

在这里,有一篇名为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语句部分开始,之前的那篇文章其实已经有一个近乎完整的示例了,这里就挑几个坑以及几个点说啦,首先是bindParambindValue的区别,一个是将引用,一个是将值传进去,好了,坑爹的地方到了,请看这里: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)