【问题标题】:CodeIgniter: How to know if $this->load->database(); did connect?CodeIgniter:如何知道 $this->load->database();连接了吗?
【发布时间】:2010-09-23 08:55:31
【问题描述】:

如果我将 CI 应用程序配置为使用数据库进行会话处理,如果会话用户数据返回 false,我可以假设用户的会话已过期。

但是如果返回false的真正原因是数据库连接没有建立成功呢?

【问题讨论】:

  • 如果您无法连接到数据库,那么您将无法使用他们的会话数据...

标签: codeigniter


【解决方案1】:

默认情况下,CodeIgniter 会在数据库加载后无法连接时出现致命错误,但如果你有:

$db['local']['db_debug'] = FALSE;

那么它不会告诉你。您通常可以关闭调试,但仍然可以通过执行以下操作对失败的加载做出反应:

if ( $this->load->database() === FALSE )
{
   exit('THE END IS NIGH!');
}

【讨论】:

  • 这对我来说不太适用。我正在使用数据库组,也许那里的逻辑略有不同,但是 load->database("group", TRUE);即使连接失败,似乎也会返回一个 mysql 对象。相反,我不得不关闭自动初始化并检查 db->initialize() 是否为假。
  • 是的,这个答案肯定行不通。如果数据库已成功加载,后续调用加载数据库将始终返回 FALSE。
  • 正确。不要多次调用它? :)
【解决方案2】:

我测试了我发现的所有东西,没有任何东西,我发现的唯一方法是使用 dbutil 检查数据库是否存在。

$this->load->database();
$this->load->dbutil();

// check connection details
if( !$this->dbutil->database_exists('myDatabase'))
    echo 'Not connected to a database, or database not exists';

【讨论】:

  • 你的回答帮助了我!
【解决方案3】:

CI 抛出

A Database Error Occurred
Unable to connect to your database server using the provided settings.

或类似的连接失败

【讨论】:

  • 只有在你的 database.php 中有 db_debut = TRUE 时才会发生这种情况。
  • 有什么方法可以得到更详细的错误信息吗?例如密码错误、端口关闭等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2012-08-26
相关资源
最近更新 更多