gpt4 book ai didi

php - 在 codeigniter 3 中切换数据库

转载 作者:太空宇宙 更新时间:2023-11-03 11:35:11 25 4
gpt4 key购买 nike

我正在尝试为不同的组织/用户使用/更改数据库。在 master 数据库中,我有不同组织的 db_name,我使用以下代码将 db_name 存储在 session 中。

$condition = "subdomain =" . "'" . $data['subdomain'] . "' AND " . "status =1";

$this->db->select('id, db_name');
$this->db->from('sublogin');
$this->db->where($condition);
$this->db->limit(1);

$db_name = $this->db->get()->row()->db_name;

// SET db_name for session
$this->session->set_userdata('db_name', $db_name);

在另一个模型中,切换数据库

$db_name = $this->session->userdata('db_name');
$this->db->db_select($db_name);

它在本地主机上工作但在我的实时服务器上不工作,它给出错误:

A Database Error Occurred Error Number: 1146 Table 'db694230824.users' doesn't exist

我试图回应当前数据库,它说数据库没有改变。

echo $this->db->database;
die();

最佳答案

1 个解决方案。

您可以像这样使用多个数据库:

$this->db = $this->load->database('default', TRUE);
$this->anotherDb = $this->load->database('anotherDb ', TRUE);

或者如果您分配 codeigniter super 对象:

public function __construct($params) {

$this->CI = & get_instance();
$this->CI->db = $this->CI->load->database('default', TRUE);
$this->CI->anotherDb = $this->CI->load->database('anotherDb', TRUE);
}

2个解决方案

它在早些时候工作,不能 100% 确定它是否仍然有效,但看起来这个错误仍然存​​在于 CI 中。只需在/system/database/DB_driver.php 文件中的 simple_query 函数中添加 1 行代码:

public function simple_query($sql)
{
if ( ! $this->conn_id)
{
$this->initialize();
}

$this->db_select(); // add this
return $this->_execute($sql);
}

它应该允许您像这样在模型中使用其他数据库:

$this->anotherDb = $this->load->database('anotherDb', true);

不要忘记以与默认数据库类似的方式在/application/config/database.php 文件中添加其他数据库的连接设置:

$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
...
);

$db['anotherDb'] = array(
'dsn' => '',
'hostname' => 'localhost',
...
);

CodeIgniter » Docs » Database Reference » Connecting to your Database

关于php - 在 codeigniter 3 中切换数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46584297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com