19.4 PDO中获取结果集
在PDO中获取结果集有3种方法:fetch、fetchAll和fetchColumn。
19.4.1 fetch方法
fetch方法获取结果集中的下一行,其语法格式如下:
mixed PDOStatement::fetch ( [int fetch_style [, int cursor_orientation [, int cursor_offset]]] )
fetch_style为控制结果集的返回方式,其可选方式如表19.1所示。
表19.1 fetch_style控制结果集的可选值
参数cursor_orientation:PDOStatement对象的一个滚动游标,可用于获取指定的一行。
参数cursor_offset:游标的偏移量。
【例19.1】通过fecth方法获取结果集中下一行的数据,进而应用while语句完成数据库中数据的循环输出。(实例位置:光盘TMsl191)
创建index.php文件,设计网页页面。首先,通过PDO连接mysql数据库。然后,定义select查询语句,应用prepare和execute方法执行查询操作。接着,通过fetch方法返回结果集中下一行数据,同时设置结果集以关联数组形式返回。最后,通过while语句完成数据的循环输出。其关键代码如下:
<?php $dbms='mysql'; //数据库类型,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数 $host='localhost'; //数据库主机名 $dbName='db_database19'; //使用的数据库 $user='root'; //数据库连接用户名 $pass='111'; //对应的密码 $dsn="$dbms:host=$host; dbname=$dbName"; try { $pdo=new PDO($dsn, $user, $pass); //初始化一个PDO对象,就是创建了数据库连接对象$pdo $query="select*from tb_pdo_mysql"; //定义SQL语句 $result=$pdo->prepare($query); //准备查询语句 $result->execute(); //执行查询语句,并返回结果集 while($res=$result->fetch(PDO::FETCH_ASSOC)){ //循环输出查询结果集,并且设置结果集为关联索引 ?> <tr> <td height="22" align="center" valign="middle"><?php echo $res['id']; ?></td> <td align="center" valign="middle"><?php echo $res['pdo_type']; ?></td> <td align="center" valign="middle"><?php echo $res['database_name']; ?></td> <td align="center" valign="middle"><?php echo $res['dates']; ?></td> <td align="center" valign="middle"><a href="#">删除</a></td> </tr> <?php } } catch (PDOException $e) { die ("Error! : " . $e->getMessage() . "<br/>"); } ?>
运行结果如图19.2所示。
图19.2 fetch方法获取查询结果集
19.4.2 fetchAll方法
fetchAll方法获取结果集中的所有行,其语法如下:
array PDOStatement::fetchAll ( [int fetch_style [, int column_index]] )
fetch_style:控制结果集中数据的显示方式。
column_index:字段的索引。
其返回值是一个包含结果集中所有数据的二维数组。
【例19.2】通过fecthAll方法获取结果集中的所有行,并且通过for语句读取二维数组中的数据,完成数据库中数据的循环输出。(实例位置:光盘TMsl192)
创建index.php文件,设计网页页面。首先,通过PDO连接MySQL数据库。然后,定义select查询语句,应用prepare和execute方法执行查询操作。接着,通过fetchAll方法返回结果集中的所有行。最后,通过for语句完成结果集中所有数据的循环输出。其关键代码如下:
<?php $dbms='mysql'; //数据库类型,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数 $host='localhost'; //数据库主机名 $dbName='db_database19'; //使用的数据库 $user='root'; //数据库连接用户名 $pass='111'; //对应的密码 $dsn="$dbms:host=$host; dbname=$dbName"; try { $pdo=new PDO($dsn, $user, $pass); //初始化一个PDO对象,就是创建了数据库连接对象$pdo $query="select*from tb_pdo_mysql"; //定义SQL语句 $result=$pdo->prepare($query); //准备查询语句 $result->execute(); //执行查询语句,并返回结果集 $res=$result->fetchAll(PDO::FETCH_ASSOC); //获取结果集中的所有数据 for($i=0; $i<count($res); $i++){ //循环读取二维数组中的数据 ?> <tr> <td height="22" align="center" valign="middle"><?php echo $res[$i]['id']; ?></td> <td align="center" valign="middle"><?php echo $res[$i]['pdo_type']; ?></td> <td align="center" valign="middle"><?php echo $res[$i]['database_name']; ?></td> <td align="center" valign="middle"><?php echo $res[$i]['dates']; ?></td> <td align="center" valign="middle"><a href="#">删除</a></td> </tr> <?php } } catch (PDOException $e) { die ("Error! : " . $e->getMessage() . "<br/>"); } ?>
运行结果如图19.3所示。
图19.3 fetchAll方法返回结果集中的所有数据
19.4.3 fetchColumn方法
fetchColumn方法获取结果集中下一行指定列的值,其语法如下:
string PDOStatement::fetchColumn ( [int column_number] )
可选参数column_number设置行中列的索引值,该值从0开始。如果省略该参数,则将从第一列开始取值。
通过fecthColumn方法获取结果集中下一行中指定列的值,注意这里是“结果集中下一行中指定列的值”。
【例19.3】创建index.php文件,设计网页页面。首先,通过PDO连接MySQL数据库。然后,定义select查询语句,应用prepare和execute方法执行查询操作。接着,通过fetchColumn方法输出结果集中下一行第一列的值。其关键代码如下:(实例位置:光盘TMsl193)
<?php $dbms='mysql'; //数据库类型,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数 $host='localhost'; //数据库主机名 $dbName='db_database19'; //使用的数据库 $user='root'; //数据库连接用户名 $pass='111'; //对应的密码 $dsn="$dbms:host=$host; dbname=$dbName"; try { $pdo=new PDO($dsn, $user, $pass); //初始化一个PDO对象,就是创建了数据库连接对象$pdo $query="select*from tb_pdo_mysql"; //定义SQL语句 $result=$pdo->prepare($query); //准备查询语句 $result->execute(); //执行查询语句,并返回结果集 ?> <tr> <td height="22" align="center" valign="middle"><?php echo $result->fetchColumn(0); ?></td> </tr> <tr> <td height="22" align="center" valign="middle"><?php echo $result->fetchColumn(0); ?></td> </tr> <tr> <td height="22" align="center" valign="middle"><?php echo $result->fetchColumn(0); ?></td> </tr> <tr> <td height="22" align="center" valign="middle"><?php echo $result->fetchColumn(0); ?></td> </tr> <?php } catch (PDOException $e) { die ("Error! : " . $e->getMessage() . "<br/>"); } ?>
运行结果如图19.4所示。
图19.4 fetchColumn方法获取结果集中第一列的值
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。