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

时间:2016-07-05 17:23:57

标签: php server localhost hosting host

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

<?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):拒绝连接   /hermes/bosnaweb04a/b2140/.../newdbtest.php   在第8行

     

成功连接

以上第8行是:

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

主要的问题是,虽然它告诉我“连接成功”,但我认为警告是试图告诉我有什么搞砸了整个网站,因为基本上什么都没有用(比如登录功能),尽管它可以正常工作我的localhost环境或我们的旧主机。

注意: 我更新了代码,以反映我尝试过的最佳做法/版本。杰伊布兰查德的答案到目前为止有助于协助这些更新,虽然目前的问题尚未解决。

1 个答案:

答案 0 :(得分:4)

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()(程序)方法。在我看来,你应该坚持使用程序或OOP方法,以保持清洁(不是你不能混合,只是让它更难以遵循)。

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