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。