設定 CodeIgniter 資料庫語系

寫 web app 當然一定都會存取資料庫啦! 在用過 CodeIgniter 一陣子, 中文的使用者應該就會發現到, CI 似乎沒有地方可以直接設定資料庫語系的地方, 所以如果當資料庫的語系不是我們要的, 那麼出來的東西就會都是亂碼, 所以就需要在每次的 query 之前都要先送出個 SET NAMES 的 query, 但是在 CodeIgniter 這個 framework 應該會有好一點的方法吧? 應該可以直接在 config/database.php 裡直接設定我們所要的語系這樣才對, 嗯, 沒有目前辦法 XD

好吧! 其實要修改一下 system/database/DB_driver.php 如下即可:

// Select the database
        if ($this->database != '')
        {
            if ( ! $this->db_select())
            {
                log_message('error', 'Unable to select database: '.$this->database);

                if ($this->db_debug)
                {
                    $this->display_error('db_unable_to_select', $this->database);
                }
                return FALSE;
            }
            elseif( ! empty($this->init_sql) )
            {
                $this->_execute($this->init_sql);
            }
        }```

看到上面的 code , 其實增加的只有下面這個部份
        elseif( ! empty($this->init_sql) )
        {
            $this->_execute($this->init_sql);
        }```

嗯, 接下來, 我們就可以在 config/database.php 裡面, 增加一行設定, 在資料庫動作的時候, 都會執行這個設定的動作, 這麼一來我們就可以用類似於設定的方式來設定資料庫的語系, 而不用在每次 query 之前都送出 SET NAMES 這個動作, 那麼增加的設定如下

$db['default']['init_sql'] = "SET NAMES 'utf8' "

畢竟 CI 是外國人寫的, 不過我想資料庫語系設定這一點, 在新版的 CI 應該會獲得解決吧!

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!