我有这个简单的连接脚本,我已经使用了一段时间,它对我来说效果很好。
<?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环境或我们的旧主机。
注意: 我更新了代码,以反映我尝试过的最佳做法/版本。杰伊布兰查德的答案到目前为止有助于协助这些更新,虽然目前的问题尚未解决。
答案 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端口号。这可以很容易地解释服务器之间的差异。