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 为可选参数,表示希望返回的结果集类型,默认为关联及数字索引共有的数组形式。
| 取值 | 说明 |
|---|---|
| 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 时指定。
| 取值 | 说明 |
|---|---|
| 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 为可选参数,表示希望返回的结果集类型,默认为关联及数字索引共有的数组形式。
| 取值 | 说明 |
|---|---|
| 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 时指定。
| 取值 | 说明 |
|---|---|
| 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. PHP PDO
- 2. PHP PDO->query() 查询数据记录并返回查询结果
- 3. PHP PDO->exec() 执行无返回结果集的 SQL 语句
- 4. PHP PDOException 错误处理
留言