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->query() 查询数据记录并返回查询结果
  3. 3. PHP PDO->exec() 执行无返回结果集的 SQL 语句
  4. 4. PHP PDOException 错误处理