1. 建立一个连接

PHP为连接MySQL提供了函数库:mysqli(i表示改进)。当在PHP中使用mysqli函数库时,可以使用面向对象或面向过程的语法。

在脚本中使用如下语句连接MySQL服务器:

//面向对象
$db = new mysqli('localhost', 'username', 'password', 'db'); 
//面向过程
$db = mysqli_connect('localhost', 'username', 'password', 'db');

这个函数将返回一个资源,而不是一个对象。这个资源表示到数据库的连接。

MySQL对同时连接数有一定的限制,MySQL参数max_connections决定同时连接的个数,它与相关的Apache参数MaxClients的作用是,告诉服务器拒绝新的连接请求,确保系统资源不会在系统忙碍的时候,或软件瘫痪的时候被请求和使用。


2. 选择数据库

PHP中,可以调用mysqli_select_db()函数来实现,例如:

//面向对象
$db->select_db($dbname);
//面向过程
mysqli_select_db($db_resource, $db_name);


3. 查询数据库

可以使用mysqli_query()函数来执行数据库查询,例如:

//面向对象
$result = $db->query($query);
//面向过程
$result = mysqli_query($db_resource, $query);


4. 检索结果

可以使用不同的函数以不同的方式将查询结果从结果对象中取出。

1) 查询返回的行数。

//面向对象
$result->num_rows;
//面向过程
mysqli_num_rows($result);

2) 取出结果集中的一行,以关联数组返回。

//面向对象
$row = $result->fetch_assoc();
//面向过程
$row = mysqli_fetch_assoc($result);

3) 取出结果集中的一行,以索引数组返回。

//面向对象
$row = $result->fetch_row(); 
//面向过程
$row = mysqli_fetch_row($result);

4) 取出结果集中的一行,以对象形式返回。

//面向对象
$row = $result->fetch_object(); 
//面向过程
$row = mysqli_fetch_object($result);


5. 断开连接

通过调用如下语句,可以释放结果集:

//面向对象
$result->free();
//面向过程
mysqli_free_result($result);

然后调用如下语句关闭数据库连接:

//面向对象
$db->close();
//面向过程
mysqli_close($db);


6. 使用prepared

mysqli函数库支持prepared语句的使用。它们对于执行大量具有不同数据的相同查询时,可以提高执行速度,也可以免受SQL注入的***,例如:

$query = "insert into test value(?, ?, ?)";
$stmt = $db->prepare($query);
$stmt->bind_param(1, '2', "3");
$stmt->execute();
$row = $stmt->fetch();
$stmt->close();