如何从数据库连接文件中删除IF语句


How to remove IF statement from DB connection file?

如何从代码中删除IF条件?

由于一些奇怪的原因,这段代码只在正确的数据库凭据在ELSE语句中工作。如果我有正确的数据库凭证在If语句连接不会工作。发生了什么事?:)

<?php
/* database connection */
if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
define('DBUSER', 'User1');
define('DBPASS', 'password2');
define('DBHOST', 'localhost');
define('DBNAME', 'selector');
} else {
define('DBUSER', 'User2');
define('DBPASS', 'password1');
define('DBHOST', 'localhost');
define('DBNAME', 'Database');
}
define('DB', 'mysql:host=' . DBHOST . ';dbname=' . DBNAME);

这是因为您必须在$_SERVER['REMOTE_ADDR']中获取值::1。如果您更改为

,它应该可以工作
if ($_SERVER['REMOTE_ADDR'] == '::1') {
define('DBUSER', 'User1');
define('DBPASS', 'password2');
define('DBHOST', 'localhost');
define('DBNAME', 'selector');
} else {
define('DBUSER', 'User2');
define('DBPASS', 'password1');
define('DBHOST', 'localhost');
define('DBNAME', 'Database');
}

您应该使用$_SERVER['HTTP_HOST']

按如下方式编写代码:-

$host = ['localhost', '127.0.0.1'];
if(in_array($_SERVER['HTTP_HOST'], $host)){
    $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
}
else{
    $pdo = new PDO('mysql:host=example.com;dbname=your_db', 'username', 'password');
}

如果你想使用常量,那么写

if(in_array($_SERVER['HTTP_HOST'], ['localhost', '127.0.0.1'])){
    define('DBUSER', 'User1');
    define('DBPASS', 'password1');
    define('DBHOST', 'localhost');
    define('DBNAME', 'your_db1');
}
else{
    define('DBUSER', 'User2');
    define('DBPASS', 'password2');
    define('DBHOST', 'example.com');
    define('DBNAME', 'your_db2');
}

然后写你的连接连接对象如下

$pdo = new PDO('mysql:host='.DBHOST.'; dbname='.DBNAME, DBUSER, DBPASS);

在我看来,这段代码的创建是为了让站点管理员,直接从服务器机器连接,可以使用mysql用户访问不同的数据库(选择器),而不是其他用户(例如用于管理目的)。

所以,检查你是否有一个名为"selector"的db;如果是,创建User1和password2。如果没有,只需删除除:

之外的所有内容。
define('DBUSER', 'User2');
define('DBPASS', 'password1');
define('DBHOST', 'localhost');
define('DBNAME', 'Database');
define('DB', 'mysql:host=' . DBHOST . ';dbname=' . DBNAME);