【问题标题】:Choose which database connection to run选择要运行的数据库连接
【发布时间】:2015-05-13 14:12:36
【问题描述】:

所以我的项目中有我的数据库连接。该文件有一个本地和一个在线请求,当我在本地主机上工作时,一个被注释掉了。

有没有办法在 php 中查找它必须使用哪个?

如果 url = localhost/blabla 使用本地其他使用在线?

这是连接。

try{
    //local connection
    $db = new PDO('mysql:host = 127.0.0.1; dbname=XXXX', 'root','');

    //local online
    //$db = new PDO('mysql:host = XXXXX; dbname=XXXXX', 'xxxxx','*****');

    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
    echo $e->getMessage();
    die();
}
$db->exec("set names utf8");

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

如果可能的话,希望有人能提供帮助,谢谢

【问题讨论】:

  • 一种方法是根据 URL(或其他)定义您的凭据。这样您就不必担心代码中的多个连接。 If(url == 'x' ) { $username='foo'; { else } $username = 'bar' }
  • 如果您的本地数据库连接字符串与生产环境不同,那么我建议您使用一个配置文件来设置它,并且您只需确保在每个环境中都进行了适当的设置。

标签: php database if-statement pdo


【解决方案1】:

您不应检查 URL,而应设置 config file。然后在服务器上将DEVELOPMENT 设置为0,如果您在本地,则在1 上设置。

config.php

<?php
    define('DEVELOPMENT', 1);
?>

数据库.php

<?php
    if(DEVELOPMENT) {
        // setup your local DB
    } else {
        // setup your live db
    }
?>

【讨论】:

  • 非常感谢,它完成了这项工作,我知道它在某些方面是可能的。
  • @user3426191 如果对您有帮助,请接受此答案,以便其他人可以使用此线程:)(复选符号)
  • 我必须等待 3 分钟才能接受,但我会的
【解决方案2】:

你可以通过$_SERVER变量知道IP,所以:

define('LOCALHOST', 'XX.XX.XX.XX');

if($_SERVER["REMOTE_ADDR"] == LOCALHOST)
{
  //open connection to the localhost users db
  $db = new PDO('mysql:host = 127.0.0.1; dbname=XXXX', 'root','');
}else{
  //open connection to rest of users db
  $db = new PDO('whatever', 'root','');
}

【讨论】:

    【解决方案3】:

    这样做,把你的db.php放在它自己的文件夹中,上传到服务器后,然后更改用户权限,这样你就不能用本地连接覆盖它

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多