public function query($sql, $link = NULL, $isthrow = TRUE) {
empty($link) && $link = $this->wlink;
if(defined('DEBUG') && DEBUG && isset($_ENV['_sqls']) && count($_ENV['_sqls']) < 1000) {
$start = microtime(1);
$result = mysqli_query($link, $sql); //$result = mysql_query($sql, $link);
$runtime = number_format(microtime(1) - $start, 4);
// explain 分析 select 语句
$explain_str = '';
if(substr($sql, 0, 6) == 'SELECT') {
//echo $sql; //测试
$query = mysqli_query($link,"explain $sql"); //$query = mysql_query("explain $sql", $link);
if($query !== FALSE) {
$explain_arr = mysqli_fetch_assoc($query); //$explain_arr = mysql_fetch_assoc($query);
//print_r($explain_arr);
$explain_str = ' <font color="blue">[explain type: '.$explain_arr['type'].' | rows: '.$explain_arr['rows'].']</font>';
}
}
$_ENV['_sqls'][] = ' <font color="red">[time:'.$runtime.'s]</font> '.htmlspecialchars(stripslashes($sql)).$explain_str;
}else{
$result = mysqli_query($link, $sql); //$result = mysql_query($sql, $link);
}
if(!$result && $isthrow) {
$s = 'MySQL Query Error: <b>'.$sql.'</b>. '.mysql_error();
if(defined('DEBUG') && !DEBUG) $s = str_replace($this->tablepre, '***', $s); // 防止泄露敏感信息
throw new Exception($s);
}
$_ENV['_sqlnum']++;
return $result;
}