腾讯云618限量抢购
  1. PHP基础教程
  2. PHP进阶教程
  3. ThinkPHP 3.0/3.1 教程

PHP PDO->query() 查询数据记录并返回查询结果

最后更新:2010-12-07 16:24阅读:74666

PDO->query()

PDO->query() 用于查询数据记录并返回查询结果。

语法:

PDO->query()

PDO->query() 用于查询数据记录并返回查询结果。

语法:

PDO->query( string statement )

例子:

<?php
//构造PDO连接
$dbh = "mysql:host=localhost;dbname=test";
$db = new PDO($dbh, 'root', 'root123');
$db->query("set character set 'gbk'");

//查询数据
$sql = "SELECT * FROM user";
$sth = $db->query($sql);
while($row = $sth->fetch()){
    echo "用户名:".$row['username']."<br />";
    echo "电子邮件:".$row['email']."<br />";
    echo "注册日期:".date("Y-m-d", $row['regdate'])."<br /><br />";
}
$db = null;
?>

在上面的例子中,我们仿照 MySQL 教程章节的查询例子,用 PDO 的方式对 user 表进行查询操作。

PDOStatement->fetch()

PDO 中的 fetch() 方法用于从结果集中获取一行结果,该方法行为类似 mysql_fetch_array() ,不同的是该方法不仅返回数组,还可返回对象。

语法:

PDOStatement->fetch(int mode)

mode 为可选参数,表示希望返回的结果集类型,默认为关联及数字索引共有的数组形式。

mode 参数可取值如下:
取值 说明
PDO::FETCH_ASSOC 关联索引(字段名)数组形式
PDO::FETCH_NUM 数字索引数组形式
PDO::FETCH_BOTH 默认,关联及数字索引数组形式都有
PDO::FETCH_OBJ 按照对象的形式
PDO::FETCH_BOUND 通过 bindColumn() 方法将列的值赋到变量上
PDO::FETCH_CLASS 以类的形式返回结果集,如果指定的类属性不存在,会自动创建
PDO::FETCH_INTO 将数据合并入一个存在的类中进行返回
PDO::FETCH_LAZY 结合了 PDO::FETCH_BOTH、PDO::FETCH_OBJ,在它们被调用时创建对象变量

PDOStatement->setFetchMode()

如果不在 fetch() 中指定返回的结果类型,也可以单独使用 setFetchMode() 方法设定,如:

......
$sth = $db->query($sql);
$sth->setFetchMode(PDO::FETCH_ASSOC);
while($row = $result->fetch()){
    ......
}

PDOStatement->fetchAll()

fetchAll() 方法用于把数据从数据集一次性取出并放入数组中。

语法:

PDOStatement->fetchAll([int mode [,int column_index]])

mode 为可选参数,表示希望返回的数组,column_index 表示列索引序号,当 mode 取值 PDO::FETCH_COLUMN 时指定。

mode 参数可取值如下:
取值 说明
PDO::FETCH_COLUMN 指定返回返回结果集中的某一列,具体列索引由 column_index 参数指定
PDO::FETCH_UNIQUE 以首个键值下表,后面数字下表的形式返回结果集
PDO::FETCH_GROUP 按指定列的值分组

例子:

$sth = $db->query($sql);
$row = $sth->fetchAll();

//只返回 username(index=1)
$row = $sth->fetchAll(PDO::FETCH_COLUMN, 1);

//将 username GROUP 返回(注:由于表中 username 无重复记录,因此本例无意义)
$row = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 1);

PDO->query( string statement )

例子:

<?php
//构造PDO连接
$dbh = \"mysql:host=localhost;dbname=test\";
$db = new PDO($dbh, \'root\', \'root123\');
$db->query(\"set character set \'gbk\'\");

//查询数据
$sql = \"SELECT * FROM user\";
$sth = $db->query($sql);
while($row = $sth->fetch()){
    echo \"用户名:\".$row\[\'username\'\].\"<br />\";
    echo \"电子邮件:\".$row\[\'email\'\].\"<br />\";
    echo \"注册日期:\".date(\"Y-m-d\", $row\[\'regdate\'\]).\"<br /><br />\";
}
$db = null;
?>

在上面的例子中,我们仿照 MySQL 教程章节的查询例子,用 PDO 的方式对 user 表进行查询操作。

PDOStatement->fetch()

PDO 中的 fetch() 方法用于从结果集中获取一行结果,该方法行为类似 mysql_fetch_array() ,不同的是该方法不仅返回数组,还可返回对象。

语法:

PDOStatement->fetch(int mode)

mode 为可选参数,表示希望返回的结果集类型,默认为关联及数字索引共有的数组形式。

mode 参数可取值如下:
取值 说明
PDO::FETCH_ASSOC 关联索引(字段名)数组形式
PDO::FETCH_NUM 数字索引数组形式
PDO::FETCH_BOTH 默认,关联及数字索引数组形式都有
PDO::FETCH_OBJ 按照对象的形式
PDO::FETCH_BOUND 通过 bindColumn() 方法将列的值赋到变量上
PDO::FETCH_CLASS 以类的形式返回结果集,如果指定的类属性不存在,会自动创建
PDO::FETCH_INTO 将数据合并入一个存在的类中进行返回
PDO::FETCH_LAZY 结合了 PDO::FETCH_BOTH、PDO::FETCH_OBJ,在它们被调用时创建对象变量

PDOStatement->setFetchMode()

如果不在 fetch() 中指定返回的结果类型,也可以单独使用 setFetchMode() 方法设定,如:

......
$sth = $db->query($sql);
$sth->setFetchMode(PDO::FETCH_ASSOC);
while($row = $result->fetch()){
    ......
}

PDOStatement->fetchAll()

fetchAll() 方法用于把数据从数据集一次性取出并放入数组中。

语法:

PDOStatement->fetchAll(\[int mode \[,int column_index\]\])

mode 为可选参数,表示希望返回的数组,column_index 表示列索引序号,当 mode 取值 PDO::FETCH_COLUMN 时指定。

mode 参数可取值如下:
取值 说明
PDO::FETCH_COLUMN 指定返回返回结果集中的某一列,具体列索引由 column_index 参数指定
PDO::FETCH_UNIQUE 以首个键值下表,后面数字下表的形式返回结果集
PDO::FETCH_GROUP 按指定列的值分组

例子:

$sth = $db->query($sql);
$row = $sth->fetchAll();

//只返回 username(index=1)
$row = $sth->fetchAll(PDO::FETCH_COLUMN, 1);

//将 username GROUP 返回(注:由于表中 username 无重复记录,因此本例无意义)
$row = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 1);


本章节内容共分 4 部分:
  1. 1. PHP PDO
  2. 2. PHP PDO-&gt;query() 查询数据记录并返回查询结果
  3. 3. PHP PDO-&gt;exec() 执行无返回结果集的 SQL 语句
  4. 4. PHP PDOException 错误处理
腾讯云618限量抢购