在PHP网页中创建MySQL连接非常简单,仅需一行指令即可,如下所示:
$link = mysql_connect(’数据库所在位置’, ’数据库账号’, ’数据库密码’); |
例如,要连接本机MySQL数据库,数据库账号为root,数据库密码为123456,则连接指令如下:
$link = mysql_connect(’localhost’, ’root’, ’123456’); |
这个$link变量便是通过创建完成的数据库进行连接的,如果执行数据库查询指令,此变量相当重要。
为了避免可能出现的错误(如数据库未启动、连接端口被占用等问题),这个指令最好加上如下的错误处理机制:
$link = mysql_connect('localhost', 'root', '123456')
or die("Could not connect : " . mysql_error());
如果连接失败,便会在浏览器上出现“Could not connect”字样,以告知用户错误信息。
重点整理
在PHP网页中创建MySQL连接非常简单,仅需以下的指令:
$link = mysql_connect('数据库所在位置', '数据库账号', '数据库密码');
数据库选用
在一套MySQL数据库中,可以容纳许多数据库并存,但每次操作均只能对单一数据库进行。因此在连接创建完成后,便需选用要操作的数据库。
选用数据库指令如下,在此以选用mysql数据库为例:
mysql_query("use mysql");
也可以使用专门的API指令:
mysql_select_db("mysql") or die("Could not select database");
这两个指令都是选用mysql数据库为欲操作的数据库。
重点整理
选用数据库指令如下,可以使用:mysql_query("use mysql");
也可以使用专门的API来下指令:mysql_select_db("mysql");
执行SQL指令
在选用数据库后,便可进行SQL指令的操作,以下的范例是通过PHP程序对mysql数据库执行 "select * from user" 这段SQL指令的语句:
$result = mysql_query("select * from user",$link); |
其中,$result变量将存储查询后的结果,而mysql_query()函数即是查询指令专用的函数,至少需要传入两个参数,分别是SQL语句与SQL连接。在此SQL语句为:"select * from user",SQL连接为之前所建立的$link。
如果想把SQL查询子句分开写以增强程序的可读性,也可这样写,意义与功能完全相同。
$sqlstr="select * from user"; $result = mysql_query($sqlstr,$link); |
如果采用第二种写法,更改SQL指令时,仅需更改$sqlstr参数的内容,即可改变SQL指令。
在查询时,为避免可能出现的错误,这个指令最好加上如下的错误处理机制:
$sqlstr="select * from user"; $result = mysql_query($sqlstr) or die("Query failed : " . mysql_error()); |
重点整理
进行SQL指令的操作,对mysql数据库执行"select*from user" 这段SQL指令的语句:
$result=mysql_query("select*fromuser",$link); |
分析表头
在MySQL执行完前面的mysql指令之后,接下来要做的便是分析所返回的数据。
而分析所返回的数据分成两个部分:其一为分析表头,也就是分析所返回数据的字段名称;其二为分析表身,也就是分析返回的数据内容。
表头数据就是字段名称,不见得一定要分析,通常在显示完整表格、查找字段对应关系时才会进行分析。以user表格为例,表头数据便是“Host”、“User”、“Password”等字段名称。
根据SQL查询子句的不同,所返回的表头字段数也不同,因此通常以while指令进行分析。以下的例子是以php的while指令配合mysql_fetch_field()函数分析表头,并显示在表格的一行中:
while ($field = mysql_fetch_field($result)) { echo "<td>".$field->name."</td>\n"; } echo "</tr>\n"; |
在这个范例中,mysql_fetch_field()函数必须传入$result查询结果变量,所创建的每个$field变量便代表一个字段。每个字段都有数种属性(名称、长度、类型等),在此我们通过->操作符,取得 $field->name 这个字段名称属性,并通过 echo 指令显示出来。
重点整理
分析所返回的数据分成两个部分:其一为分析表头,其二为分析表身。
分析表头使用mysql_fetch_field()函数必须传入$result查询结果变量,再通过->操作符,取得 $field->name 这个字段名称属性。
分析表身
表身便是返回数据的实际内容,以user表格为例,表身数据便是“localhost”、“root”等表格实际内容,在范例中,我们将表身内容以表格方式全部显示出来,程序代码如下:
while ($row = mysql_fetch_row($result)) { echo "<tr>\n"; for($i=0;$i<count($row);$i++){ echo "<td>".$row[$i]."</td>"; } echo "</tr>\n"; } |
与表头数据相同,因返回数据条数不定,因此亦需使用while指令进行分析。其中mysql_fetch_row()函数需传入$result数据。
经过分析后,所返回的$row是一个一维数组变量,存储每一行所有的数据字段。再通过for循环,并配合count()函数计算数据行中的列数,将$row数组中每一元素显示出来。
当然,也可根据需要,取出单一目标字段进行分析,如账号密码比较等。
重点整理
分析表头使用mysql_fetch_row()函数,必须传入$result查询结果变量,再通过for循环,并配合count()函数计算数据行中的列数,将$row数组中每一元素显示出来。
释放资源
完成SQL操作后,必须释放所建立的连接资源,以免过多的连接占用造成系统性能的下降。释放资源指令如下:
mysql_free_result($result); mysql_close($link); |
在这两行语句中,第一行释放了$result这个变量,第二行指令关闭与数据库的连接$link,以释放所占用的存储器空间与数据库连接。
重点整理
释放资源指令:
mysql_free_result($result);
mysql_close($link);
<?php
$conn = mysql_connect("localhost","root","root");
mysql_select_db("empirecms");
$sqlstr="select * from phome_ecms_news";
$result = mysql_query($sqlstr,$conn) or die("Query failed : " . mysql_error());
echo "<table>";
while($row = mysql_fetch_row($result)){
echo "<tr>";
for($i=0;$i<count($row);$i++){
echo "<td>".$row[$i]."</td>";
}
echo "</tr>";
}
echo "</table>";
?>