EC-CUBEでMySQLデータベースのデータ取得で文字化けするときの対処法

EC-CUBEのデータベースは、標準ではPostgreSQLで、MySQLにも対応しています。
PostgreSQLとMySQLの両方で動作するようにコードが書かれているため、どちらか一方に特化した書き方をしているコードと比べるとSQL文の効率が悪くなっています。

たとえば値を挿入するときのIDには、AUTO_INCREMENTは使用せず xxxx_id_seqというテーブルにsequenceで最後の値(最大の値)を保存するようになっています。

またMySQLは標準ではないためか、あまりきれいに動作しません。
別のサーバに移行したりするときに、文字化けすることがあります。
このときには次のコードを記述することで、UTF-8に文字コードを指定することができます。

/data/class_extends/SC_Query_Ex.php

class SC_Query_Ex extends SC_Query {

    function SC_Query_Ex($dsn = "", $force_run = false, $new = false) {

        $this->SC_Query($dsn, $force_run, $new);
        if (!PEAR::isError($this->conn)) {
            if(DB_TYPE == 'mysql'){
                $this->conn->query('SET NAMES utf8');
            }
        }
    }
}

関連記事

スポンサーリンク

COALESCE関数 NULL値でない最初の引数を返す

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る