php访问mysql localhost和远程主机

时间:2013-01-18 06:27:39

标签: php

我在localhost和远程主机dev之间进行了更改:我在localhost上测试它然后在php中将文件复制到远程。

我有一个类MYDB,它将host和user-db信息存储在常量中。 如何声明常量并编写MYDB,以便我不必在这两个访问日期之间手动切换。相反,我想自动切换。 我用:

host: localhost
user: timo
db: localhostdb
pwd: ...

 host: remotehostname
 user: timo
 db: remotehostdb
  pwd:..

在切换到localhost之前,我评论远程主机,反之亦然。这个不好。 任何的想法 ? 蒂莫

3 个答案:

答案 0 :(得分:3)

我通过将凭据存储在config.live.php文件中来处理这个问题,可以使用config.test.php文件覆盖该文件。

包含配置时:

require_once(file_exists('config.test.php') ? 'config.test.php' : 'config.live.php');

我保留了版本config.live.php和SVN忽略的config.test.php。这样,测试文件永远不会在生产中结束,任何签出代码副本的人都可以将live.php复制到新的test.php文件并更新其测试配置。

答案 1 :(得分:2)

关于好。其他一些方法

  1. 有些人在制作和本地测试之间维护不同的文件
  2. 你可以将代码包装起来($ production).. else .....然后自动设置生产变量。例如我们根据网址进行操作。如果URL是生产URL,则$ production设置为production。

答案 2 :(得分:2)

我是如何解决的:

类MyDB {

private static $db;

static public function getInstance($Start = false) {

if ($_SERVER['SERVER_NAME'] == 'localhost') {

/*  $DB_HOST = 'localhost'; 
    $DB_DATABASE = ''; 

    $DB_USER = ''; 
    $DB_PASSWORD = '';
*/  
    $aConnection = array('DB_HOST' => 'localhost', 'DB_DATABASE' => '', 'DB_USER' => '', 'DB_PASSWORD' => '');
} else {

    $aConnection = array('DB_HOST' => 'd', 'DB_DATABASE' => '', 'DB_USER' => '', 'DB_PASSWORD' => $DB_PASSWORD);

}

    if (!self::$db) {
        self::$db = new PDO('mysql:host=' . $aConnection['DB_HOST'] . ';dbname=' . $aConnection['DB_DATABASE'] , $aConnection['DB_USER'], $aConnection['DB_PASSWORD'], array(PDO::ATTR_PERSISTENT => true, 
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES => false,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));
    }

    echo mysql_error();

    if ($Start)
        return $aConnection;
    else #Normale pdo klasse
        return self::$db;
}

}

因此,如果我需要一个正常的mysql连接,我使用数组,如果我需要PDO,我使用静态db变量。