gpt4 book ai didi

php - CODEIGNITER 从用户选择的值中选择数据库

转载 作者:可可西里 更新时间:2023-11-01 07:39:10 24 4
gpt4 key购买 nike

我正在使用应用程序(学校管理系统),我要创建一个多数据库驱动的应用程序,每年一个单独的数据库。

我的方法是 >> 我制作了一个带有类似选择选项的表单

<form method="POST" action="host/configure/select_database">
<select name="database">
<option value="2010">Year 2010</option>
<option value="2011">Year 2011</option>
<option value="2012">Year 2012</option>
<option value="2013">Year 2013</option>
<option value="2014">Year 2014</option>
<option value="2015">Year 2015</option>
<option value="soon...">So On ... </option>
</select>
<input type="submit" value="choose year"/>
</form>

当用户从给定选项中选择任何年份时,我的 select_database 将设置数据库以便使用

configure.php( Controller )

public function select_database(){
session_start();
$_SESSION['current_database'] = $this->input->post('database');
redirect_to('/');
}

这里是我在database.php中选择的数据库代码

数据库.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$database = isset($_SESSION['current_database'])?$_SESSION['current_database']:'2015';

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'Username';
$db['default']['password'] = "DbPassword";
$db['default']['database'] = $database;
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

这是我的方法有没有其他最好的方法来改变用户选择的数据库请确定我是否正确谢谢

最佳答案

我不确定,但我认为数据库配置在您的 Controller 初始化之前加载。

您可以手动连接一个或多个数据库。首先,如您所写,保存到 session 中:

configure.php( Controller )

public function select_database()
{
$your_dbs = array('2010', '2011');
$db = $this->input->post('database');

if( ! in_array($db, $your_dbs))
show_error('This database not exists');

$this->session->set_userdata('selected_db', $db);
redirect('/');
}

并且在模型的构造函数中,您可以创建(另一个) 连接:

a_model.php

private $_db;

public function __construct()
{
$this->_db = $this->load->database(array(
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => $this->session->userdata('selected_db'),
'dbdriver' => 'mysqli',
), TRUE);
}

public function get_data()
{
return $this->_db->get('users')->result();
}

在您的模型中,您还可以检查这是否是一个有效的数据库,例如,在您的构造函数中使用帮助程序。我只是写了一个草图,我会怎么做。

关于php - CODEIGNITER 从用户选择的值中选择数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32963661/

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