我有一个PHP脚本,用于连接MySQL数据库。通过mysql_connect连接工作完美,但在尝试使用PDO时,我收到以下错误:
SQLSTATE[HY000] [2005] Unknown MySQL server host 'hostname' (3)
我用来连接的代码如下:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$hostname_localhost ="hostname";
$database_localhost ="dbname";
$username_localhost ="user";
$password_localhost ="pass";
$user = $_GET['user'];
$pass = $_GET['pass'];
try{
$dbh = new PDO("mysql:host=$hostname_localhost;dbname=$database_localhost",$username_localhost,$password_localhost);
echo 'Connected to DB';
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare("SELECT check_user_company(:user,:pass)");
$stmt = $dbh->bindParam(':user',$user,PDO::PARAM_STR, 16);
$stmt = $dbh->bindParam(':pass',$pass,PDO::PARAM_STR, 32);
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row)
{
echo $row['company_id'].'<br />';
}
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
提前致谢
答案 0 :(得分:9)
遇到同样的问题。 Mine解决方案是另一个数据库端口我写了localhost:1234并得到了这个错误。
修正:
mysql:host=$hostname_localhost;port=1234;dbname=$database_localhost",$username_localhost,$password_localhost);
echo 'Connected to DB';
答案 1 :(得分:3)
这看起来非常简单,这就是我用来构建我的PDO连接器(注意到你的dbname和主机的完成方式与我的不同,如果相关则不知道,但值得检查):
PDO创建功能
require_once('config.inc.php');
function buildDBConnector(){
$dsn = 'mysql:dbname='.C_BASE.';host='.C_HOST;
$dbh = new PDO($dsn, C_USER, C_PASS);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbh;
}
的的config.inc.php 强> 的
define('C_HOST','localhost');// MySQL host name (usually:localhost)
define('C_USER','sweetUsername');// MySQL username
define('C_PASS','sweetPassword');// MySQL password
define('C_BASE','superGreatDatabase');// MySQL database
虽然没有意义,但当我试图在$dsn
调用期间声明newPDO
内联包含变量时,我也一直都会遇到失败。我将它拆开并使用$ dsn变量来执行此操作。从那时起就没有问题了。
想知道你是偶然共享主机吗?
注意:强> 的 如果您没有专用IP,而是通过NAT,则您的IP将无法正确转换为您的实际服务器。
那有什么帮助?
的更新:强> 的 想到另一件事。您是否尝试连接到与运行脚本不同的IP上的mysql数据库?如果是这样,您可能需要为要调用数据库的ip启用remoteSQL访问。相当容易,但如果你没有访问localhost,则很关键。
答案 2 :(得分:0)
您似乎没有指定数据库主机DNS详细信息或IP地址。添加即可解决问题