获取数据库配置设置到 codeigniter 中的控制器/视图

Posted

技术标签:

【中文标题】获取数据库配置设置到 codeigniter 中的控制器/视图【英文标题】:get database config settings to controller/views in codeigniter 【发布时间】:2021-08-15 07:38:16 【问题描述】:

我正在使用 Codeigniter 3 并且我有一个页面来下载备份 .sql 文件(它运行良好)。问题是如果我上传我的我需要更改 config/database.php 和 db.php 上的配置项目到服务器。所以我想要的是只在上传到服务器时更改 config/database.php

配置/数据库.php:

$db['default'] = array(
'dsn'   => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'my_database',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'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
);

views/db.php:

$mysqlUserName      = "root";
$mysqlPassword      = "";
$mysqlHostName      = "localhost";
$DbName             = "my_database";
$backup_name        = "mybackup.sql";

Export_Database($mysqlHostName,$mysqlUserName,$mysqlPassword,$DbName,  $tables=false, $backup_name=false );

控制器:

  public function backup()
  
   if ($this->data['user_profile']['user_group'] > 2)
  
   return show_404('The page you requested was not found.');
  else 
   $this->load->view('db');

   redirect('admin/setting/backup','refresh');
   
  

我刚刚尝试过这种方法,但它显然是错误的:

$mysqlUserName      = $db['username'];
$mysqlPassword      = $db['password'];
$mysqlHostName      = $db['hostname'];
$DbName             = $db['database'];

【问题讨论】:

【参考方案1】:

在这里,在您的控制器中使用它:

public function index()

    $this->load->database();  //load the driver first
    $mysqlUserName      = $this->db->username;
    $mysqlPassword      = $this->db->password;
    $mysqlHostName      = $this->db->hostname;
    $DbName             = $this->db->database;

如果你有多个数据库,可以使用$this->load->database('dbname_you_want_to_use')

【讨论】:

【参考方案2】:

您可以使用 $this->config->item($item [, $index='']) 方法将配置值获取到控制器或视图。在documentation 中了解更多信息。

例子:

$mysqlUserName      = $this->config->item('username', 'default');
$mysqlPassword      = $this->config->item('password', 'default');
$mysqlHostName      = $this->config->item('hostname', 'default');
$DbName             = $this->config->item('database', 'default');

【讨论】:

以上是关于获取数据库配置设置到 codeigniter 中的控制器/视图的主要内容,如果未能解决你的问题,请参考以下文章

如何防止codeigniter中的自动注销?

从codeigniter中的url获取id

CodeIgniter 没有数据库?

无法在 Codeigniter 中从模型获取查询结果到控制器

如何将结果从模型传递到 CodeIgniter 中的控制器?

为啥/在找到页面时 CodeIgniter 在哪里设置 404 http 状态?