我的网页分为三个部分,顶部、中部和底部。所有三个部分都连接到不同的数据库。但是考虑到如果其中一个数据库主机名被弄乱那么整个页面就会中断并抛出错误的场景。是否有可能如果某个数据库发生某些事情,那么该部分不应出现,但该部分的其余部分显示运行顺利?
我的数据库.php
$db['default'] = array(
'dsn' => '',
'hostname' => '1.1.1.1',
'username' => 'username',
'password' => 'password',
'database' => 'DB',
'dbdriver' => 'mysqli',
'dbprefix' => 'pre_',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
除了主机名和用户名外,所有三个数据库都具有相同的设置。第一个主机名是 1.1.1.1。第二个主机名是 1.1.1.2,第三个是 1.1.1.3,因为发生了一些事情,它无法连接到 1.1.1.2 并给我错误消息。
最佳答案
您可以创建 3 组数据库,例如:
$db['default'] = array(
'hostname' => '1.1.1.1',
'username' => 'username',
'password' => 'password',
'database' => 'DB',
'dbdriver' => 'mysqli',
'dbprefix' => 'pre_',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
$db['db2'] = array(
'hostname' => '1.1.1.2',
'username' => 'username2',
'password' => 'password',
'database' => 'DB',
'dbdriver' => 'mysqli',
'dbprefix' => 'pre_',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
$db['db3'] = array(
'hostname' => '1.1.1.3',
'username' => 'username3',
'password' => 'password',
'database' => 'DB',
'dbdriver' => 'mysqli',
'dbprefix' => 'pre_',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
并连接每个数据库:
$DB1 = $this->load->database('default', TRUE);
$DB2 = $this->load->database('db2', TRUE);
$DB3 = $this->load->database('db3', TRUE);
因此您可以根据需要使用每一个:
$DB1->query();
$DB1->result();
https://codeigniter.com/user_guide/database/connecting.html#connecting-to-multiple-databases
关于php - 即使在 codeigniter 中 db 的主机名错误,也继续执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55949935/