我只是通过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);
答案 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...
"如果你处于开发状态。但是如果你在产品环境中,这不应该是一个例外 - 那么你将不得不重建这部分代码。