用 PDO 类的 prepare 方法准备好一条 SQL 查询语句以后,比如你想从数据库里面选择一些数据出来,执行了这条 SQL 语句,返回来的结果,可以使用 fetch() 方法得到。
fetch 是在 PDOStatement 类上定义的方法。这个方法可以获取到结果集的下一行数据。 另外还有一个 fetchAll 方法,它会返回结果里面的所有的数据。
下面,我们一起去看一下这两个方法。
先去准备一条 SQL 声明,比如我们得到 posts 这个表里面的所有的东西。先定义一个变量来存储这条声明 ... $statement 等于 ... 用 $db_handle 的 prepare 方法去准备这条 SQL,$db_handle 是使用 PDO 连接到连接库返回来的一个 PDO 对象。
选择数据用的是 SELECT ... 加上一个星号 ... 表示选择所有的栏 ... FROM posts ... 从 posts 这个表里 ...
// 准备
$statement = $db_handle->prepare
(
'SELECT * FROM posts'
);
这条语句不需要去绑定参数 ... 下面,去执行一下这条声明 ... 用的是声明的 execute 方法 ...
// 执行
$statement->execute();
下面,我们就可以使用 fetch 方法,得到执行了 $statement 以后返回来的结果了。 可以先把这个结果输出到屏幕上看一下 ...
echo '<pre>';
var_dump
(
$statement->fetch()
);
echo '</pre>';
你会看到, 用 fetch 方法返回来的结果里面的第一排内容。如果再调用一次这个 fetch 方法的话,就会返回结果里面的第二排内容 ...
$statement->fetch()
我们可以使用一个 while 循环,去输出得到的所有的结果 ...
fetch_style
注意 fetch 返回来的是一个数组 ... 这个数组里面有数字键也有带名字的键 ... 使用 fetch 方法的时候,可以决定返回来的数据的样式。
比如可以是数字数组,关联数组,也可以是对象,另外还有一些样式,可以参考一下这个地址:http://cn2.php.net/manual/zh/pdostatement.fetch.php ,看一下 fetch_style 这个参数的说明。
下面,我们去试几个 ... 想要返回数字数组,可以用 PDO::FETCH_NUM 作为 fetch 方法的参数 ... 再复制一行 .. 然后用 PDO::FETCH_ASSOC 的样式提取数字 ... ASSOC 表示关联数组 ..
再添加一行 ... 这次我们可以使用 PDO::FETCH_OBJ ... 这样提供出来的数据会作为一个对象 ...
$statement->fetch(),
$statement->fetch(PDO::FETCH_NUM),
$statement->fetch(PDO::FETCH_ASSOC),
$statement->fetch(PDO::FETCH_OBJ)
在这里你看到的这些 PDO::FETCH 什么东西, 它们实际上是定义在 PDO 类上的常量,常量就是表示一个固定值。
这里,用 PDO::FETCH_NUM 提取的内容,只用数字索引键 ... 用 PDO::FETCH_ASSOC 的 fetch ,返回的是个关联数组,也就是数组里面的每个项目都有个名字.. 这个名字就是数据表里面的栏的名字。
最后用 PDO::FETCH_OBJ 的 fetch ,返回来的是一个对象。对象里面的属性的名字就是数据表里面的栏的名字 ...
setFetchMode
另外在 PDOStatement 里面,还有一个 setFetchMode 方法,使用这个方法,可以给声明去设置一个统一的提取的样式。像这样 ...
$statement->setFetchMode(PDO::FETCH_ASSOC);
这样所有用 $statement 的 fetch 方法提供的内容,都会使用关联数组的样式。