13.3.2 用PHP处理数据结果集
当一个SQL语句在程序中成功执行之后,可以使用mysql_fetch_array()来获取具体的查询结果,即使用该函数获取记录的字段值。代码13-5中调用该函数获取SELECT语句的查询结果。
代码13-5 使用函数mysql_fetch_array()获取查询结果集13-5.php
01 <?php
02 $host='localhost';//定义服务器
03 $user_name='root';//定义用户名
04 $password='admin';//定义密码
05
06 $conn=mysql_connect($host,$user_name,$password);//连接MySQL
07 if(!$conn)
08 {
09 die('数据库连接失败:'.mysql_error());
10 }
11 mysql_select_db('test');//选择数据库
12
13 $sql='select id,name,city from users';
14
15 $result=mysql_query($sql)OR die("<br/>ERROR:<b>".mysql_error()."</b><br/>产生问题的SQL:".$sql);
16
17 if($num=mysql_num_rows($result))//判断SELECT语句查找到的行数
18 {
19 $row=mysql_fetch_array($result);//mysql_fetch_array()将结果集中的一行作为数组返回
20 echo'<pre>';
21 print_r($row);//输出由函数mysql_fetch_array()返回的数组
22 }
23
24 mysql_close($conn);
25 ?>
【代码解析】程序在第17行使用函数mysql_num_rows()的返回值来判断SELECT语句是否查找到更多的行,如果mysql_num_rows()返回值不为0,即找到数据,则调用函数mysql_fetch_array()获取结果集。执行这段代码,可以看到如图13-7所示的结果。
前面介绍函数mysql_fetch_array()时,讲述到该函数返回的是结果集中的一行,并将其作为关联数组或普通数组,默认该返回数组是二者兼有的。从图13-7也可以看出,mysql_fetch_array()返回的数组为每个字段值建立了两个索引:一个是以数字为索引,另一个以字段名为索引。
函数mysql_fetch_array()只能返回结果集中的一行,循环调用该函数,可以取得结果集中的所有行。代码13-6演示了调用mysql_fetch_array()取得结果集中的所有记录。
代码13-6 使用函数mysql_fetch_array()获取结果集中的所有记录13-6.php
01 <?php
02 $host='localhost';//定义服务器
03 $user_name='root';//定义用户名
04 $password='admin';//定义密码
05
06 $conn=mysql_connect($host,$user_name,$password);//连接MySQL
07 if(!$conn)
08 {
09 die('数据库连接失败:'.mysql_error());
10 }
11 mysql_select_db('test');//选择数据库
12
13 $sql='select id,name,city from users';
14
15 $result=mysql_query($sql)OR die("<br/>ERROR:<b>".mysql_error()."</b><br/>产生问题的SQL:".$sql);
16
17 if($num=mysql_num_rows($result))
18 {
19 echo'<pre>';//格式化输出
20 while($row=mysql_fetch_array($result,MYSQL_ASSOC))
21 {
22 print_r($row);//输出每行数据
23 }
24 }
25
26 mysql_close($conn);
27 ?>
【代码解析】这段代码第20行使用while循环多次调用函数mysql_fetch_array(),每次将调用返回的数组赋给变量$row,然后在循环体内将数组变量$row输出。代码13-6的执行结果如图13-8所示。
代码13-6中调用函数mysql_fetch_array()时指定第2个参数为MYSQL_ASSOC,因此其返回的结果集数组是以字段名为索引的关联数组。