似乎这是一个非常常见的错误,但我无法解决这个问题。我正在运行PHP 5.3.1 外部MySQL服务器5.5.8 - 与Phpmyadmin一起安装并运行Windows Server 2k8R2。
当我尝试以下操作时:
$connection = new mysqli("myhost.com:3306", "myUser", "myPwd", "myDB");
$result = $connection->prepare("SELECT * FROM tt_staff
WHERE crew_type = ?
AND inaktiv_vakt = 0
ORDER BY ansvarlig_vakt DESC, crew_type, navn_vakt");
$result->bind_param("s", $value);
$result->execute();
$result->bind_result($value, $name);
我得到了“ 警告:mysqli :: mysqli()[mysqli.mysqli] :( HY000 / 2005):未知的MySQL服务器主机(...)“
我确保在DB服务器上的php.ini中启用了Mysqli,但这也是我所做的全部,因为我被告知这应该是开箱即用的。由于这是我第一次使用预处理语句,因此在某些地方可能会出现一个简单的拼写错误。
答案 0 :(得分:16)
问题是MySQLi不接受端口作为主机名的一部分,而是作为单独的参数。所以我认为你应该如何打开你的联系:
$connection = new mysqli("myhost.com", "myUser", "myPwd", "myDB", "3306");
或许,根本不要给端口,因为3306是默认端口。
答案 1 :(得分:1)
在数据库中检查用户的权限('myUser')。确保权限允许连接通过'%'(或仅仅是您的IP),而不仅仅是'localhost'(127.0.0.1)。然后确保“重新加载特权”。
Blockquote注意:phpMyAdmin直接从MySQL的权限表中获取用户权限。如果已手动更改这些表的内容,则可能与服务器使用的权限不同。在这种情况下,您应该在继续之前重新加载权限。
答案 2 :(得分:0)
mysqli找不到数据库服务器,需要检查域名和端口号是否正确