PHP 语言 Warning: mysql_real_escape_string(): No connection could be made because the target machine actively refused it 错误解决

PHP阿木 发布于 2025-07-01 3 次阅读


一、

在PHP开发过程中,数据库操作是必不可少的环节。在使用MySQL数据库时,我们可能会遇到各种错误,其中“Warning: mysql_real_escape_string(): No connection could be made because the target machine actively refused it”错误是比较常见的一种。本文将深入解析这一错误,并提供相应的解决方案。

二、错误原因分析

1. 数据库连接失败

“Warning: mysql_real_escape_string(): No connection could be made because the target machine actively refused it”错误提示我们,在执行mysql_real_escape_string()函数时,无法建立与MySQL数据库的连接。这可能是由于以下原因:

(1)MySQL服务器未启动或配置错误;

(2)数据库连接参数错误,如主机地址、端口号、用户名、密码等;

(3)MySQL服务器防火墙设置导致无法连接。

2. mysql_real_escape_string()函数使用不当

虽然“Warning: mysql_real_escape_string(): No connection could be made because the target machine actively refused it”错误与数据库连接有关,但有时也可能是因为在使用mysql_real_escape_string()函数时,未正确处理参数。

三、解决方案

1. 检查MySQL服务器状态

我们需要确认MySQL服务器是否已启动。可以通过以下命令检查MySQL服务状态:

bash

systemctl status mysqld


如果MySQL服务未启动,请尝试启动它:

bash

systemctl start mysqld


2. 检查数据库连接参数

接下来,我们需要检查数据库连接参数是否正确。以下是一个示例代码,用于连接MySQL数据库:

php

<?php


$host = 'localhost'; // 数据库主机地址


$port = '3306'; // 数据库端口号


$username = 'root'; // 数据库用户名


$password = 'root'; // 数据库密码


$dbname = 'test'; // 数据库名称

$conn = mysqli_connect($host, $username, $password, $dbname, $port);


if (!$conn) {


die('连接失败: ' . mysqli_connect_error());


}


?>


请确保数据库连接参数正确无误。

3. 检查MySQL服务器防火墙设置

如果MySQL服务器配置了防火墙,请确保防火墙允许连接到MySQL服务器的端口(默认为3306)。以下是一个示例,展示如何使用iptables允许MySQL连接:

bash

允许MySQL连接


iptables -A INPUT -p tcp --dport 3306 -j ACCEPT


4. 使用mysqli扩展代替mysql扩展

从PHP 5.5.0版本开始,mysqli扩展已成为PHP的推荐数据库扩展。如果可能,请使用mysqli扩展代替mysql扩展。以下是一个示例代码,展示如何使用mysqli扩展连接MySQL数据库:

php

<?php


$host = 'localhost'; // 数据库主机地址


$port = '3306'; // 数据库端口号


$username = 'root'; // 数据库用户名


$password = 'root'; // 数据库密码


$dbname = 'test'; // 数据库名称

$conn = new mysqli($host, $username, $password, $dbname, $port);


if ($conn->connect_error) {


die('连接失败: ' . $conn->connect_error);


}


?>


四、总结

本文深入解析了PHP中“Warning: mysql_real_escape_string(): No connection could be made because the target machine actively refused it”错误,并提供了相应的解决方案。在实际开发过程中,我们需要注意以下几点:

1. 确保MySQL服务器已启动,且配置正确;

2. 检查数据库连接参数是否正确;

3. 检查MySQL服务器防火墙设置,确保允许连接到MySQL服务器的端口;

4. 尽量使用mysqli扩展代替mysql扩展。

通过以上方法,我们可以有效地解决“Warning: mysql_real_escape_string(): No connection could be made because the target machine actively refused it”错误,提高PHP数据库操作的稳定性。