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();