当无法 select 数据库时,Codeigniter 重定向到自定义视图

Codeigniter redirect to custom view when Unable to select database

我正在尝试找到一种方法将我的 codeigniter 应用程序重定向到自定义 link (controller/method),只有在发生此错误时我才能自定义视图文件夹中的内容。

A Database Error Occurred

Unable to select the specified database: *******

Filename: core/Loader.php

Line Number: 347

我尝试自定义文件 errors/error_db.php,但这不是我想要的,因为该文件包含所有数据库错误,我想保持它完整,或者如果有在此文件中执行 if-else 的方法仅在发生此错误时重定向:"Unable to select the specified database"。

连接数据库时添加测试

$db = $this->database->load('...');
$connected = $db->initialize();
if (!$connected) 
{
  //load view, redirect....
} 

将其替换为您的"errors/error_db.php"

请注意,重定向功能需要 url 已加载的库。

<!DOCTYPE html>
<html lang="en">
<head>
<title>Database Error</title>
<style type="text/css">

::selection{ background-color: #E13300; color: white; }
::moz-selection{ background-color: #E13300; color: white; }
::webkit-selection{ background-color: #E13300; color: white; }

body {
    background-color: #fff;
    margin: 40px;
    font: 13px/20px normal Helvetica, Arial, sans-serif;
    color: #4F5155;
}

a {
    color: #003399;
    background-color: transparent;
    font-weight: normal;
}

h1 {
    color: #444;
    background-color: transparent;
    border-bottom: 1px solid #D0D0D0;
    font-size: 19px;
    font-weight: normal;
    margin: 0 0 14px 0;
    padding: 14px 15px 10px 15px;
}

code {
    font-family: Consolas, Monaco, Courier New, Courier, monospace;
    font-size: 12px;
    background-color: #f9f9f9;
    border: 1px solid #D0D0D0;
    color: #002166;
    display: block;
    margin: 14px 0 14px 0;
    padding: 12px 10px 12px 10px;
}

#container {
    margin: 10px;
    border: 1px solid #D0D0D0;
    -webkit-box-shadow: 0 0 8px #D0D0D0;
}

p {
    margin: 12px 15px 12px 15px;
}
</style>
</head>
<body>
    <div id="container">
        <h1><?php echo $heading; ?></h1>
        <?php 
        $pos = strpos($message, "Unable to select the specified database");

        if ($pos === false) {
            echo $message;
        }else{
            redirect("controller/method");
        }
        ?>
    </div>
</body>
</html>

在我的例子中,应用程序是多租户的,具有不同数据库的相同代码库,在 URL 子域及其数据库之间有一个 link。因此在登录控制器中添加 mysqli_connect 以检查数据库是否存在,如果不存在则将用户重定向到注册页面。