14.2 使用PHP连接MySQL数据库
14.1节介绍了PHP操作MySQL的主要函数,本节通过具体实例介绍这些函数在PHP程序中的具体用法。
14.2.1 建立和数据库的连接
在PHP程序中操作数据库,首先要连接数据库。代码14-1演示了如何使用函数mysql_connect()连接本地数据库。
代码14-1 使用函数mysql_connect()连接本地数据库14-1.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 echo ' 数据库连接成功!'; 12 ?>
【代码解析】代码第06行使用函数mysql_connect()尝试连接本地的MySQL数据库,函数mysql_connect()中参数$host的值为localhost,表示建立一个到本地的MySQL数据库连接。程序14-1.php中,函数mysql_connect()连接MySQL服务器使用的用户名是root,密码是admin,读者可能需要根据自己的实际设置改变这两个参数(以下同),以便程序可以正确连接到MySQL数据库。接着,程序判断函数mysql_connect()的返回值,如果返回值为FALSE,程序会提示一个“数据库连接失败的”的信息,同时使用函数mysql_error()将具体的错误信息输出到Web页面。这里使用了语言结构die(),它的功能类似于eixt,输出一段信息并立即中断程序的执行。
如果函数mysql_connect()连接本地MySQL数据库服务器成功,代码14-1会向页面输出一个“数据库连接成功”的提示信息。如果本地MySQL已启动,并且程序执行正常,该代码会输出如图14-2所示的结果。
接下来看看如果没有成功连接到数据库的效果。对代码14-1稍做修改,比如连接一个不存在MySQL服务器,或向mysql_connect传入一个错误的用户名或密码,然后访问14-1.php,就会看到类似图14-3的效果。
从图14-3可以看出,连接MySQL失败时,函数mysql_error()产生了一条信息,该信息描述了连接失败的原因为Unknown MySQL server host'localhost1',该信息的含义是未知的MySQL服务器localhost1。通常在PHP程序中使用函数mysql_error()来了解PHP操作数据库出现问题的某些原因。
图14-2 使用mysql_connect()函数连接MySQL数据库
图14-3 连接数据库失败时的效果
14.2.2 持久连接和临时连接
除mysql_connect()之外,PHP提供了另外一个函数也可以打开到MySQL服务器的连接,这个函数是mysql_pconnect()。该函数的语法和函数mysql_connect()类似,它返回的是到MySQL服务器的持久连接,如果出错会返回FALSE。该函数和mysql_connect()非常相似,但也有两个主要区别。
·mysql_pconnect()会查找一个在同一主机上使用相同用户名和密码已经建立的连接,如果找到,该函数就返回此连接,而不是创建一个新连接。
·当PHP程序执行完成后,使用mysql_pconnect()建立的MySQL连接不会被关闭,mysql_close()也不会关闭由mysql_pconnect()建立的连接。为区别于由函数mysql_pconnect()建立的连接,可以把由函数mysql_connect()建立的连接称为临时连接。
说明 大多数情况下,程序只需使用函数mysql_connect()来建立到MySQL服务器的连接即可。建立一个持久连接有时是很消耗系统资源的,只有对那些连接开销比较大的系统,才考虑使用持久连接。
14.2.3 关闭连接
在PHP程序中,推荐在程序中明确调用mysql_close()来关闭数据库连接。代码14-2演示了在成功连接到数据库之后,调用函数mysql_close()关闭该连接。
代码14-2 使用mysql_close()关闭数据库连接14-2.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 echo ' 数据库连接成功!'; 12 13 if(mysql_close($conn)) // 关闭打开的连接 14 { 15 echo '<br/>........<br/>'; 16 echo ' 到数据库的连接已经成功关闭'; 17 } 18 ?>
【代码解析】代码第06行首先建立一个到MySQL服务器的连接$conn,然后第13行调用函数mysql_close()关闭这个连接,并通过该函数的返回值判断关闭是否成功,如果成功,将输出一段提示信息。代码14-2的执行结果如图14-4所示。
图14-4 关闭到MySQL服务器的连接