$mysql_version = mb_substr(DB::conn()->server_info, 0, 3); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $query = $_POST['query']; try { // Contextual queries (on les exécute sans rien en faire) if (isset($_POST['context_queries'])) { DB::conn()->multi_query($_POST['context_queries']); // Code pour jeter les résultats à la poubelle do { if ($res = DB::conn()->store_result()) { $res->free(); } } while (DB::conn()->more_results() && DB::conn()->next_result()); } // Recuperation des résultats de la requete $explain_results = @DB::conn()->fetchAll((strpos(strtolower($query), 'explain') === false ? 'EXPLAIN ' : '') . $_POST['query']); // Création de l'Explainer $explainer = new Explainer($_POST['query'], $mysql_version); if (is_array($explain_results)) { foreach ($explain_results as $result) { // Création de la ligne et attachement à l'explainer $explainer->addRow(new Row($result, $explainer->getRowsCount() > 0 ? $explainer->rows[$explainer->getRowsCount() - 1] : null, $explainer)); } } } catch (DB_Exception $e) { $template->error = utf8_encode($e->getError()); } } } else { header('Location: config.php'); exit;
/** * Row::initColumns() * * @param mixed $table * @return void */ public function initColumns($table) { try { $sql_cols = DB::conn()->fetchAll("SHOW COLUMNS FROM `{$table}`"); if (is_array($sql_cols) && count($sql_cols)) { $has_id_col = false; $has_null_col = false; foreach ($sql_cols as $sql_col) { $tmp_col = new Column($sql_col); if ($tmp_col->containsId()) { $has_id_col = true; } if ($tmp_col->isNull()) { $has_null_col = true; } $this->_cols[] = $tmp_col; } if (!$has_id_col) { $this->_explainer->hints[] = "It seems no column is named <code>id</code> in <code>{$this->cells['table']->v}</code>, it's ok but not usual."; } /* if ($has_null_col) { $this->_explainer->hints[] = "You have some nullable columns in <code>{$this->cells['table']->v}</code>, use <code>NOT NULL</code> if you can"; } */ } } catch (DB_Exception $e) { } }
function count_num($grain, $cond) { $sql = "select count(distinct(ipaddr)) ip, count(distinct(name)) as uv, \n\t\t\t\tcount(t1.id) as pv from visitors v1, tracks t1 where v1.siteid=:siteid and v1.id = t1.vid "; if (isset($grain)) { $grainday = explode("--", $grain); if (count($grainday) > 1) { if ($grainday[1]) { $sql = $sql . "and day >= '{$grainday['0']}' and day < '{$grainday['1']}'"; } else { $sql = $sql . "and day >= '{$grainday['0']}'"; } } else { $sql = $sql . "and day = '{$grainday['0']}'"; } } $count = DB::conn()->fetchOne($sql, MYSQLI_ASSOC, $cond); return $count; }