【问题标题】:Code Igniter $this -> db -> list_tables(); using old databaseCodeigniter $this -> db -> list tables();使用旧数据库
【发布时间】:2016-08-31 10:30:38
【问题描述】:

我正在尝试使用 Code Igniter 连接到一个新数据库,但查询一直给出以前数据库的表列表。

我想获取新数据库中的所有表,然后遍历新数据库的表以获取它们的字段详细信息。

我的新数据库连接代码如下

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

我的函数代码如下所示:

$this -> load -> database('adb', TRUE);

$adb = array();

$tables = $this -> db -> list_tables();

foreach ($tables as $table)
{
    $temp = array();

    $fields = $this -> db -> field_data($table);

    $temp['table'] = $table;
    $temp['fields'] = $fields;

    $adb[] = $temp;
}

我收到一个错误,指出我的新数据库中不存在一个表,但原因是该表在我的旧数据库中,但 field_data 函数连接到新数据库

我只希望函数从新数据库中获取表。

提前感谢


我的完整数据库配置文件如下所示

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

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'username';
$db['default']['password'] = 'password';
$db['default']['database'] = 'old_database';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$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['adb']['hostname'] = 'localhost';
$db['adb']['username'] = 'username';
$db['adb']['password'] = 'password';
$db['adb']['database'] = 'database';
$db['adb']['dbdriver'] = 'mysql';
$db['adb']['dbprefix'] = '';
$db['adb']['pconnect'] = TRUE;
$db['adb']['db_debug'] = TRUE;
$db['adb']['cache_on'] = FALSE;
$db['adb']['cachedir'] = '';
$db['adb']['char_set'] = 'utf8';
$db['adb']['dbcollat'] = 'utf8_general_ci';
$db['adb']['swap_pre'] = '';
$db['adb']['autoinit'] = FALSE;
$db['adb']['stricton'] = FALSE;

【问题讨论】:

    标签: php database codeigniter


    【解决方案1】:
    1. 检查新数据库的名称和codeigniter的database.php中配置的名称
    2. 检查您是否没有为旧数据库设置活动组,即 `$active_group = 'old_db' 我希望这会有所帮助

    【讨论】:

    • 我看到有一个Active Group集,我在加载新DB时是否应该重新定义它?
    • 当我添加$active_group = 'database'(这是新数据库,它完全可以与旧数据库一起使用)
    • 我通过像link 的答案一样扭动我的代码找到了解决方案
    猜你喜欢
    • 2013-05-31
    • 2023-03-27
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多