我只是通过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);
Xatenev.. 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...
如果你处于开发状态,你可能会使用" "方式.但是如果你在产品环境中,那不应该是一个例外 - 那么你将不得不重建这部分代码.
难道你不能尝试这样的东西吗?!:
$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...
如果你处于开发状态,你可能会使用" "方式.但是如果你在产品环境中,那不应该是一个例外 - 那么你将不得不重建这部分代码.