13.3 使用PHP显示MySQL数据库的数据
在PHP建立了到MySQL的连接之后,就可以执行SQL语句来查询数据库中的数据。然后,通过PHP函数处理查询后的结果集,以便后续程序使用,或通过整理,将这些数据显示到Web页面上。本节通过示例代码,向读者介绍如何使用PHP函数完成从数据库获取数据、处理数据以及向Web页面显示数据。
说明 本节在PHP程序中使用到的数据,均是来自第12章介绍MySQL操作时,在MySQL自带数据库test中所建的表users。读者可以按12章的讲述来建立该表并插入一些数据,以便理解本章的示例PHP程序。
13.3.1 在PHP执行SQL语句
要从数据库获取数据,首先PHP要执行一条对表操作的SQL语句,包括SELECT、INSERT、UPDATE或DELETE语句。一般情况下,在PHP中执行SELECT语句,会从表中查找出一些记录行。而执行其他语句,只会返回语句是否执行成功的信息。
通过前面的介绍,读者已经知道,在PHP中调用函数mysql_query()将会通知MySQL执行一条SQL语句。代码13-3演示了使用mysql_query()在PHP中执行一条SQL语句。
代码13-3 在PHP程序中执行SQL语句13-3.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 $result=mysql_query($sql);//获取查询结果
15
16 if($result)
17 {
18 echo'SQL语句:'.$sql.'<br/>已经成功执行!';
19 $num=mysql_num_rows($result);//调用函数mysql_num_row()获得SELECT语句查询结果的行数
20 echo'<br/>该SQL语句查询到<b>'.$num.'</b>行数据';
21 }
22
23 mysql_close($conn);
24 ?>
【代码解析】这段代码在建立了My SQL连接之后,首先在第11行调用函数mysql_select_db()选择数据库test,这个数据库是MySQL自带的一个供用户练习使用的数据库,第12章讲述的示例操作全都是在这个数据库中完成的,本章也有部分示例代码要操作这个数据库。选择完数据库之后,程序第14行调用函数mysql_query()执行一条SELECT语句,该函数返回值是一个资源标识符,用来标识SQL语句执行的结果,这个返回值并不是查询结果。当SQL语句执行成功后,在第19行,调用函数mysql_num_rows()取得SELECT语句所查询到的记录数。
注意 传入mysql_num_rows()的参数是$result,它正是函数mysql_query()的返回值。如果一切正常,该函数会返回如图13-5所示的结果。
通常,mysql_query()也会和mysql_error()一同使用,以便当SQL语句执行出现问题时,可以根据mysql_error()产生的信息查找问题原因。代码13-4演示了使用函数mysql_error(),获得执行SQL语句发生错误时所产生的提示信息。
代码13-4 使用函数mysql_error()获取SQL语句执行错误的信息13-4.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,gender from users';
14
15 //这里使用mysql_error()获取SQL语句执行出错时的相关信息
16 $result=mysql_query($sql)OR die("<br/>ERROR:<b>".mysql_error()."</b><br/><br/><br/>产生问题的
17 SQL<br/>".$sql);
18
19 if($result)
20 {
21 echo'SQL语句:'.$sql.'<br/>已经成功执行!';
22 }
23
24 mysql_close($conn);
25 ?>
【代码解析】这段代码在第13行定义了一个SQL语句,查询表users中某些字段的值,但字段gender不是表users中的字段,所以执行这句SQL语句是会产生错误的。程序第16行,其实是一个逻辑表达式形式的语句。该语句使用逻辑运算符O R来决定程序的执行。如果mysql_query()执行成功,那么程序就会继续向下执行,否则,程序就会调用die(),输出一段字符串,同时终止程序的执行,这段字符串里包含了由函数mysql_error()在SQL语句执行发生错误时产生的信息。代码13-4的执行结果如图13-6所示。
从图13-6可以看出,mysql_error()产生了错误信息:Unknown column'gender'in'field list',说明字段gender不存在。