更改主机:简单连接测试脚本抛出HY000/2002


Changed Host: Simple connection test script throws HY000/2002

我有这个简单的连接脚本,我已经使用了一段时间,它对我来说工作得很好。

<?php
# mysql db constants DB_HOST, DB_USER, DB_PASS, DB_NAME
const DB_HOST = 'xxx.xx.xxx.xx';
const DB_USER = 'myuser';
const DB_PASS = 'mypass';
const DB_NAME = 'myname';
$conn = new mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_errno) {
    die("Connection failed: " .$conn->connect_errno. ": " .$conn->connect_error);
} else {
    echo "Connected successfully";
}
?>

我从localhost(或我们曾经拥有的主机)测试我的连接,我在页面上得到的是:

连接成功

最近,我们改变了我们的主机(,其中的脚本)到domain.com,当我从上面的主机上运行相同的测试脚本,我得到

警告:mysqli_connect(): (HY000/2002): Connection refused in/爱马仕/bosnaweb04a/b2140/…/newdbtest.php第8行

连接成功

上面的第8行是:

$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS);

主要的问题是,虽然它告诉我"连接成功",我认为警告是试图告诉我是什么搞砸了整个网站,因为基本上没有什么真正的工作(如登录功能),虽然它工作时,我的本地主机环境或旧主机我们有。


注意:我更新了代码以反映我所尝试的最佳实践/版本。Jay Blanchard的回答迄今为止帮助了这些更新,尽管手头的问题到目前为止还没有解决。

mysqli_connect()需要四个参数才能成功连接:

const DB_HOST = 'xxx.xx.xxx.xx';
const DB_USER = 'myuser';
const DB_PASS = 'mypass';
const DB_NAME = 'myname';
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die(mysqli_error($conn));

我还将使用or die()(过程性)方法在没有连接的情况下退出。在我看来,您应该坚持使用过程方法或面向对象方法中的任何一个,以保持整洁(并不是说您不能混合使用,它只会使您更难遵循)。

另外,检查在本地机器和远程机器上使用的MySQL端口号。这可以很容易地解释服务器之间的差异。

相关文章: