如何从代码中删除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);