Beispiel #1
0
 /**
  * (内部関数) SQL文を実行する
  *
  * @param SQL文
  * @return クエリ結果リソース
  */
 static function _query($sql)
 {
     static $db;
     // DB接続
     if (!$db) {
         $db = DB::Connect(ACS_DSN);
         $db->setFetchMode(DB_FETCHMODE_ASSOC);
     }
     // 通常テーブル名を言語仕様テーブル名に変換
     $lang = ACSMsg::get_lang(FALSE);
     if ($lang != ACS_DEFAULT_LANG && $lang != "") {
         $tables_array = ACSMsg::get_lang_tables_array();
         foreach ($tables_array as $table) {
             $sql = mb_ereg_replace("([, \t\n\\(\\)\\*\\+\\-\\/]+)" . "(" . $table . ")" . "([., \t\n\\(\\)\\*\\+\\-\\/]+|\$)", "\\1" . $table . "_" . $lang . "\\3", $sql);
         }
     }
     if (ACS_DEBUG_MODE && isset($_GET['timer'])) {
         $timelimit = $_GET['timer'];
         if (empty($timelimit)) {
             $timelimit = 0;
             // デフォルト0秒
         }
         $time_array = explode(' ', microtime());
         $start_time = substr($time_array[1] . substr($time_array[0], 1), 0, 14);
         $res = $db->query($sql);
         $time_array = explode(' ', microtime());
         $end_time = substr($time_array[1] . substr($time_array[0], 1), 0, 14);
         $diff_time = substr($end_time - $start_time, 0, 5);
         if (floatval($diff_time) >= $timelimit) {
             _debug($sql);
             echo "<code>{$start_time} -&gt; {$end_time}  (<font color=red>{$diff_time}</font> sec)</code>";
         }
     } else {
         $res = $db->query($sql);
     }
     return $res;
 }