私はcodeigniterプロジェクトであなたの助けが必要です。私は設定フォルダのdatabseファイルのデータベースを動的に変更するためにセッションを使用したい。 私は$ db ['default'] ['database'] = $ _SESSION ['db_name']を設定ファイルに入れていますが、動作しません。 ログインページログインを行う他のデータベースアクセスを確認する必要があります。Codeigniterデータベースクラスのセッションを使用
データベースを選択する前に接続を変更することはできますか?
ログインページ
public function login(){
if(!$this->session->userdata('id_funcionario') || !$this->session->userdata('logado')){
$this->db->database= "test";
$this->session->destroy();
$subdomain = $_SERVER['HTTP_HOST'];
$this->db->select("database");
$this->db->where("subdomain", $subdomain);
$access = $this->db->get("table")->row();
$this->session->set_userdata("database", $access->database);
$this->load->view('/geral/login');
}else{
$url = base_url('home');
header("Location: $url ");
}
}
ログインページの作品!
データはAJAXのために送信されます。
<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
class Ajax extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->helper('url');
$this->load->helper('html');
$this->load->library('session');
}
public function toLog()
{
$email = $this->input->post('email');
$pass= md5($this->input->post('pass'));
$this->db->database = $this->session->userdata('database');
$this->db->select('*');
$this->db->from('users');
$this->db->where('usu_email',$email);
$this->db->where('usu_pass',$pass);
$usuario = $this->db->get()->result();
しかし、私は、クエリの時間にデータベースの名前を変更する方法がわかりません。私は試しましたが、それは変わりません。
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Database Driver Class
*
* This is the platform-independent base DB implementation class.
* This class will not be called directly. Rather, the adapter
* class for the specific database will extend and instantiate it.
*
*/
class CI_DB_driver {
var $username;
var $password;
var $hostname;
var $database;
.......
/**
* Constructor. Accepts one parameter containing the database
* connection settings.
*
* @param array
*/
function __construct($params)
{
if (is_array($params))
{
foreach ($params as $key => $val)
{
$this->$key = $val;
}
}
$CI = & get_instance();
$this->database = $CI->session->userdata('database');
log_message('debug', 'Database Driver Class Initialized');
}....
お手伝いできますか?