11.2.2 建立一个连接
PHP为连接MySQL提供了函数库。这个函数库是mysqli(i表示改进)。当在PHP中使用mysqli函数库时,你可以使用面向对象或面向过程的语法。
在脚本中,我们使用如下语句连接MySQL服务器:
@$db=new mysqli('localhost','bookorama','bookorama123','books');
以上代码实例化了mysqli类并且创建了到主机localhost的连接,该连接使用的用户名和密码分别是:bookorama和bookorama123。该连接被设置成使用books数据库。
使用这种面向对象的方法,可以调用这个对象的方法来访问数据库。如果你喜欢过程方法, mysqli也提供了这个选项。要以这种面向过程的方式连接,可以使用如下语句:
@$db=mysqli_connect('localhost','bookorama','bookorama123','books');
这个函数将返回一个资源,而不是一个对象。这个资源表示到数据库的连接,而且如果使用过程方法,必须将这个资源传递到mysqli的所有其他函数。这与文件处理函数非常类似,例如fopen()的工作方式。
mysqli的大多数函数都有面向对象接口和过程接口。通常,二者的差异在于过程版本的函数名称是以mysqli_开始的,同时要求传入通过mysqli_connect()函数获得的资源句柄。对这个规则来说,数据库连接是一个异常,因为它是由mysqli对象的构造函数来创建的。
尝试连接的结果需要进行检查,因为其他代码都无法在没有有效的数据库连接的情况下工作。可以使用如下所示的代码:
if(mysqli_connect_errno()){
echo'Error:Could not connect to database.Please try again later.';
exit;
}
(以上代码在面向对象版本和过程版本中相同。)mysqli_connect_errno()函数将在出现连接错误时返回一个错误号,如果成功,则返回0。
请注意,当连接到数据库时,我们通常会以错误抑制操作符@作为第一行代码。这样,可以很巧妙地处理任何错误。(这也可以通过异常来处理,我们只是没有在这个简单的例子中使用。)
请记住,MySQL对同时连接数据库的连接数量有一定的限制。MySQL参数max_connections决定了同时连接的个数,该参数和相关的Apache参数MaxClients的作用是,告诉服务器拒绝新的连接请求,从而确保系统资源不会在系统忙碌的时候,或软件瘫痪的时候被请求和使用。
可以通过修改配置文件来改变这两个参数的默认值。要设置Apache中的MaxClients参数,可以编辑系统中的httpd.conf文件。要为MySQL设置max_connections参数,可以编辑文件my.conf。