获取到用户输入的 信息 后,就该把这些信息记录到数据库中。不过在此之前,需要先建立PHP与MySQL数据库的连接。
在PHP中要建立与MySQL数据库的连接,需要使用mysqli构造函数,其调用原型是:
class mysqli {
__construct ( [string host [, string username [, string passwd [, string dbname [, int port [, string socket]]]]]] )
}
参数host指出MySQL数据库服务器,一般用IP地址(也可以是主机名,如localhost)指出服务器所在的机器。参数username和password分别指定连接时使用的用户名和密码。参数dbname指定当前连接要使用的数据库。默认情况下,PHP将连接到服务器的3306端口,开发人员可以通过参数port指定使用其他的端口号。参数socket较为少用,它可以进一步指定所用的套接字或命名管道。
在调用mysqli构造函数之后,应当调用mysqli_connect_errno()函数检查数据库连接是否建立成功,该函数原型是:
int mysqli_connect_errno ( void )
该函数返回的是最后一次建立连接时产生的错误代码,如果成功则返回0,返回其他值说明产生了某种类型的错误。调用mysqli_connect_error()函数可以获得具体的错误信息。
另外,如果在建立数据库连接时没有指定dbname参数,则还必须调用类mysqli的成员函数select_db(),以指定使用数据库服务器的哪一个数据库。该函数的原型是:
bool select_db ( string database_name)
调用如果成功返回TRUE,失败返回FALSE。参数database_name指定要使用的数据库名称。
当操作完数据库后,还要调用类mysqli的成员函数close()来关闭之前打开的数据库连接,从而释放连接资源 。虽然在PHP脚本执行完毕时,PHP会自动关闭数据库连接,但是及时关闭数据库连接是一个更好的 编程 习惯。
本例中,连接并使用数据库的代码如下:
// 调用mysqli的构造函数建立连接,同时选择使用数据库'test'
$db = @new mysqli("127.0.0.1", "developer", "123456", "test");
// 检查数据库连接
if (mysqli_connect_errno()) {
echo "数据库连接失败!<br>/n";
echo mysqli_connect_error();
exit; // 退出
程序
,后面的所有语句将不再执行
}
printf("Host information: %s <br/><br/>/n", $db->host_info);
//...... 一些操作数据库数据的语句
// 关闭数据库连接
$db->close();
到此为止,就已经建立好了一个操作数据库的PHP程序框架。
应当说明的是,PHP5的MySQL库提供了两套操作数据库的方法,一种是面向对象方式的,另一种是面向过程方式的。面向对象的方法是较先进的也是本书主要使用的方法。
这两种方式使用时的区别在于,面向对象方式调用的是类mysqli的成员函数,要使用类变量来调用,而不需要另外指定数据库连接资源;面向过程方式调用的是全局函数,要多指定一个数据库连接资源的参数。另外这两者除了连接数据库的方法外,其他功能的函数名是对应的,差别在于面向对象方式的成员函数没有“mysqli_”前缀。如面向对象方法使用$db->select_db(string dbname)来指定数据库,而面向过程方法使用mysqli_select_db (mysqli link, string dbname)来指定数据库(注意,粗体部分标出了二者的区别)。面向过程方法的函数中的参数mysqli link通过mysqli_connect()函数调用来获得,该函数的参数与mysqli的构造函数的参数完全相同;不同的是, mysqli_connect()成功时返回连接资源,失败时返回布尔值FALSE。
使用面向过程的方法连接数据库的例子参见第1章的1.3.3节。注意:PHP5之前的版本只支持面向过程的数据库操作方法。
如果用同样的参数第二次调用 mysqli_connect(),将不会建立新连接,而是返回已经打开的连接标识。