更改基于网络的PHP PDO MySQL连接的IP

时间:2014-06-07 13:57:11

标签: php mysql pdo vagrant

我只是通过Vagrant设置一个环境,以实现2台笔记本电脑的一致性。我正在使用PHP PDO的远程MySQL服务器(家庭服务器)。我想知道我是否可以使用PHP来确定我是否在本地网络上作为MySQL服务器并通过192.168.1.111连接到它或者我是否与MySQL服务器在同一网络上并通过 * .dyndns.org。

我正确设置了本地和远程连接,但它们都正常工作。

如果可用,我如何使用PHP在本地连接MySQL服务器,但如果不是通过远程地址?

$pdo = new PDO('mysql:host=' . DB_IP . ';port=' . DB_PORT . ';dbname=' . DB_NAME, DB_USER, DB_PASSWORD);

1 个答案:

答案 0 :(得分:7)

你不能尝试这样的事吗?!:

$opt = array(
   PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
   PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);

try
{
   $dsn = "mysql:host=localhost;dbname=test;charset=utf8";
   $pdo = new PDO($dsn,'root','', $opt);
}
catch (PDOException $e)
{
   $dsn = "mysql:host=yourRemoteHost;dbname=testRemoteHost;charset=utf8";
   $pdo = new PDO($dsn,'root','', $opt);
}

像这样你尝试连接到localhost,如果它不起作用,你捕获异常并连接到远程。只需将数据用于mysql:host等。

Christian Gollhardt提到你可以使用" Throw new Exception..."如果你处于开发状态。但是如果你在产品环境中,这不应该是一个例外 - 那么你将不得不重建这部分代码。