当无法选择数据库时,Codeigner重定向到自定义视图


Codeigniter redirect to custom view when Unable to select database

我正试图找到一种方法,将我的代码点火器应用程序重定向到一个自定义链接(控制器/方法),只有当发生此错误时,我才能在其中自定义视图文件夹中的内容。

A Database Error Occurred
Unable to select the specified database: *******
Filename: core/Loader.php
Line Number: 347

我试图自定义文件errors/error_db.php,但这不是我想要的,因为该文件包括所有数据库错误,我想保持它的完整性,或者如果有办法在该文件中执行if-else,仅在出现以下错误时重定向:"无法选择指定的数据库"。

将其替换为"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>

只需在连接到数据库时添加一个测试

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

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