2024 年 PHP 日本大会

mysql_close

(PHP 4, PHP 5)

mysql_close关闭 MySQL 连接

警告

此扩展在 PHP 5.5.0 中已弃用,并在 PHP 7.0.0 中移除。应改用 MySQLiPDO_MySQL 扩展。另请参见 MySQL:选择 API 指南。此函数的替代方法包括

描述

mysql_close(资源 $link_identifier = NULL): 布尔值

mysql_close() 关闭与指定链接标识符关联的到 MySQL 服务器的非持久连接。如果未指定 link_identifier,则使用上次打开的链接。

当 PHP 脚本完成执行时,打开的非持久化 MySQL 连接和结果集将自动销毁。因此,虽然显式关闭打开的连接和释放结果集是可选的,但建议这样做。这将立即将资源返回给 PHP 和 MySQL,从而可以提高性能。有关相关信息,请参见 释放资源

参数

link_identifier

MySQL 连接。如果未指定链接标识符,则假定为 mysql_connect() 打开的最后一个链接。如果未找到或建立连接,则会生成 E_WARNING 级别的错误。

返回值

成功返回 true,失败返回 false

示例

示例 #1 mysql_close() 示例

<?php
$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'无法连接:' . mysql_error());
}
echo
'连接成功';
mysql_close($link);
?>

上面的例子将输出

Connected successfully

备注

注意:

mysql_close() 不会关闭由 mysql_pconnect() 创建的持久连接。有关更多详细信息,请参见有关 持久连接 的手册页。

参见

添加备注

用户贡献的备注 2 条备注

bbodelcampo at yahoo dot co dot uk
18 年前
关于同时连接到多个不同主机的简短说明……

我在一个主要从一个数据库提取内容但使用另一个服务器上的数据库来验证许可证的网站上工作。人们可能会期望以下代码有效

<?php
// 打开到主数据库的连接
$res1 = mysql_connect($host1, $user1, $pass1);
mysql_select_db($db1);

// 打开到许可证服务器的连接
$res2 = mysql_connect($host2, $user2, $pass2);
mysql_select_db($db2, $res2);

// 获取许可证数据并在完成后关闭
mysql_query($check_sql, $res2);
// ...
mysql_close($res2);

// 现在从主数据库提取内容
// 不指定资源应该默认为最后一个打开的数据库
mysql_query($query);
// ...
?>

事实证明,由于此最后一个查询找不到活动连接,因此它将尝试使用无参数的 mysql_connect() 进行连接。但是,如果您将其作为 mysql_query($query, $res1) 执行,或者运行此主机的 mysql_connect(),则它可以正常工作。因此,似乎不可能拥有具有总体“全局”数据库连接并与对另一个主机/数据库的临时连接交织在一起的代码……
mdes[SPAM]saintes at gmail dot com
14 年前
我刚刚遇到一个与 Apache 相关的问题。

它崩溃并显示

“父进程:子进程以状态 3221225477 退出 -- 正在重新启动。”

错误来自扩展 php_mysql.dll

我不明白导致该崩溃的原因是什么……

然后,我调试了我下载的脚本,并注意到是 mysql_close() 函数导致了问题。

解决方案是向其发送链接标识符,该标识符在描述中是可选的,但会导致崩溃且没有任何说明。

感谢 agneady。
To Top