• 追加された行はこの色です。
  • 削除された行はこの色です。
*日本語を使うための設定 [#a0399644]
日本語を使うためのMySQLサーバの設定としては、[[MySQLの設定]]を行えばよいのですが、~
PHPから
MySQLで日本語を扱うためのMySQLサーバの設定としては、[[MySQLの設定]]を行えばよいのですが、~
PHPからMySQLに対してデータを格納したり、取り出したりする場合は、サーバの設定だけでは依然として~
文字化けが発生します。化けた文字列でDBに格納されてしまいます。~
文字化けを防ぐためには、目的のSQLを実行する前に以下のSQLを実行する必要があります。
 SET NAMES utf8
Magic3の[[BaseDbクラス]]では、共通で使用するコネクション作成時に1度実行し、文字化けに対応しています。
 /**
  * DB接続コネクション取得
  *
  * @return PDO 			接続コネクションオブジェクト
  */
 function _getConnection()
 {
     if (self::$_con == null){
         try {
             self::$_con = new PDO($this->_connect_dsn, $this->_connect_user, $this->_connect_password);
             self::$_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
             // DBのタイプ		
             $this->_dbType = self::$_con->getAttribute(PDO::ATTR_DRIVER_NAME);
             if ($this->_dbType == 'mysql') {	// MySQLの場合
                 self::$_con->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
                 // 文字化け防止SQL実行
                 self::$_con->exec('SET NAMES utf8');
             }
             // DBバージョン
             $this->_dbVersion = self::$_con->getAttribute(PDO::ATTR_SERVER_VERSION);
         } catch (PDOException $e) {
             // 共通エラー処理
             self::_onError($e, 'DSN=' . $this->_connect_dsn . ';' . 'USER=' . $this->_connect_user . ';' . 
                        'PWD=' . $this->_connect_password);
         }
     }
     return self::$_con;
 }