/** * (内部関数) 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} -> {$end_time} (<font color=red>{$diff_time}</font> sec)</code>"; } } else { $res = $db->query($sql); } return $res; }