0

我的控制器中有一个脚本,如下所示:

if($this->db->query("CREATE DATABASE IF NOT EXISTS db_ecommerce"))
        {
                $sql=file_get_contents('./databse_backup/backup.sql');
                foreach (explode(";\n", $sql) as $sql) 
                {
                    $sql = trim($sql);
                    //echo  $sql.'<br/>============<br/>';
                        if($sql) 
                    {
                        $this->db->query($sql);
                    } 
                }  
        }

它创建一个数据库,然后运行一个备份 sql 文件。

我的问题是我们需要事先配置 config/database.php 文件。

首先我希望这个脚本运行,然后应该更改 database.php 文件。

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'username';
$db['default']['password'] = 'password';
$db['default']['database'] = 'db_name';

由于它现在是本地主机,因此,

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'db_name';
4

1 回答 1

2

一种方法是在您的安装文件夹中包含“模板文件”,例如:ex。数据库.php

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = '<?php echo $hostname;?>';
$db['default']['username'] = '<?php echo $username;?>';
$db['default']['password'] = '<?php echo $password;?>';
$db['default']['database'] = '<?php echo $database;?>';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '<?php echo $prefix;?>';
$db['default']['pconnect'] = TRUE;
$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;

然后您可以获取 db connection 的值(例如从表单中)并在您的 codeigniter 应用程序中写入新文件(application/config/database.php)

前任。

$settings['hostname']   = $this->input->post('hostname');
$settings['username']   = $this->input->post('username');
$settings['password']   = $this->input->post('password');
$settings['database']   = $this->input->post('database');
$settings['prefix']     = $this->input->post('prefix');     

$file_contents      = $this->load->view('templates/database', $settings, true);


write_file($_SERVER['DOCUMENT_ROOT'].'application/config/database.php', $file_contents);
于 2013-07-16T09:25:56.127 回答