/** * Function to execute the query and send the response * * @param array $analyzed_sql_results analysed sql results * @param bool $is_gotofile whether goto file or not * @param string $db current database * @param string $table current table * @param bool|null $find_real_end whether to find real end or not * @param string $sql_query_for_bookmark the sql query to be stored as bookmark * @param array|null $extra_data extra data * @param string $message_to_show message to show * @param string $message message * @param array|null $sql_data sql data * @param string $goto goto page url * @param string $pmaThemeImage uri of the PMA theme image * @param string $disp_query display query * @param string $disp_message display message * @param string $query_type query type * @param string $sql_query sql query * @param array|null $selectedTables array of table names selected from the * database structure page, for an action * like check table, optimize table, * analyze table or repair table * @param string $complete_query complete query * * @return string html */ function PMA_executeQueryAndGetQueryResponse($analyzed_sql_results, $is_gotofile, $db, $table, $find_real_end, $sql_query_for_bookmark, $extra_data, $message_to_show, $message, $sql_data, $goto, $pmaThemeImage, $disp_query, $disp_message, $query_type, $sql_query, $selectedTables, $complete_query) { // Handle disable/enable foreign key checks $default_fk_check = PMA\libraries\Util::handleDisableFKCheckInit(); // Handle remembered sorting order, only for single table query. // Handling is not required when it's a union query // (the parser never sets the 'union' key to 0). // Handling is also not required if we came from the "Sort by key" // drop-down. if (PMA_isRememberSortingOrder($analyzed_sql_results) && empty($analyzed_sql_results['union']) && !isset($_REQUEST['sort_by_key'])) { if (!isset($_SESSION['sql_from_query_box'])) { PMA_handleSortOrder($db, $table, $analyzed_sql_results, $sql_query); } else { unset($_SESSION['sql_from_query_box']); } } $displayResultsObject = new PMA\libraries\DisplayResults($GLOBALS['db'], $GLOBALS['table'], $goto, $sql_query); $displayResultsObject->setConfigParamsForDisplayTable(); // assign default full_sql_query $full_sql_query = $sql_query; // Do append a "LIMIT" clause? if (PMA_isAppendLimitClause($analyzed_sql_results)) { $full_sql_query = PMA_getSqlWithLimitClause($analyzed_sql_results); } $GLOBALS['reload'] = PMA_hasCurrentDbChanged($db); $GLOBALS['dbi']->selectDb($db); // Execute the query list($result, $num_rows, $unlim_num_rows, $profiling_results, $extra_data) = PMA_executeTheQuery($analyzed_sql_results, $full_sql_query, $is_gotofile, $db, $table, isset($find_real_end) ? $find_real_end : null, isset($sql_query_for_bookmark) ? $sql_query_for_bookmark : null, isset($extra_data) ? $extra_data : null); // No rows returned -> move back to the calling page if (0 == $num_rows && 0 == $unlim_num_rows || $analyzed_sql_results['is_affected']) { $html_output = PMA_getQueryResponseForNoResultsReturned($analyzed_sql_results, $db, $table, isset($message_to_show) ? $message_to_show : null, $num_rows, $displayResultsObject, $extra_data, $pmaThemeImage, isset($result) ? $result : null, $sql_query, isset($complete_query) ? $complete_query : null); } else { // At least one row is returned -> displays a table with results $html_output = PMA_getQueryResponseForResultsReturned(isset($result) ? $result : null, $analyzed_sql_results, $db, $table, isset($message) ? $message : null, isset($sql_data) ? $sql_data : null, $displayResultsObject, $pmaThemeImage, $unlim_num_rows, $num_rows, isset($disp_query) ? $disp_query : null, isset($disp_message) ? $disp_message : null, $profiling_results, isset($query_type) ? $query_type : null, isset($selectedTables) ? $selectedTables : null, $sql_query, isset($complete_query) ? $complete_query : null); } // Handle disable/enable foreign key checks PMA\libraries\Util::handleDisableFKCheckCleanup($default_fk_check); return $html_output; }
/** * Function to get html for the sql query results table * * @param DisplayResults $displayResultsObject instance of DisplayResult * @param string $pmaThemeImage theme image uri * @param string $url_query url query * @param array $displayParts the parts to display * @param bool $editable whether the result table is * editable or not * @param int $unlim_num_rows unlimited number of rows * @param int $num_rows number of rows * @param bool $showtable whether to show table or not * @param object $result result of the executed query * @param array $analyzed_sql_results analyzed sql results * @param bool $is_limited_display Show only limited operations or not * * @return String */ function PMA_getHtmlForSqlQueryResultsTable($displayResultsObject, $pmaThemeImage, $url_query, $displayParts, $editable, $unlim_num_rows, $num_rows, $showtable, $result, $analyzed_sql_results, $is_limited_display = false) { $printview = isset($_REQUEST['printview']) ? $_REQUEST['printview'] : null; $table_html = ''; $browse_dist = !empty($_REQUEST['is_browse_distinct']); if ($analyzed_sql_results['is_procedure']) { do { if (!isset($result)) { $result = $GLOBALS['dbi']->storeResult(); } $num_rows = $GLOBALS['dbi']->numRows($result); if ($result !== false && $num_rows > 0) { $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); $fields_cnt = count($fields_meta); $displayResultsObject->setProperties($num_rows, $fields_meta, $analyzed_sql_results['is_count'], $analyzed_sql_results['is_export'], $analyzed_sql_results['is_func'], $analyzed_sql_results['is_analyse'], $num_rows, $fields_cnt, $GLOBALS['querytime'], $pmaThemeImage, $GLOBALS['text_dir'], $analyzed_sql_results['is_maint'], $analyzed_sql_results['is_explain'], $analyzed_sql_results['is_show'], $showtable, $printview, $url_query, $editable, $browse_dist); $displayParts = array('edit_lnk' => $displayResultsObject::NO_EDIT_OR_DELETE, 'del_lnk' => $displayResultsObject::NO_EDIT_OR_DELETE, 'sort_lnk' => '1', 'nav_bar' => '1', 'bkm_form' => '1', 'text_btn' => '1', 'pview_lnk' => '1'); $table_html .= $displayResultsObject->getTable($result, $displayParts, $analyzed_sql_results, $is_limited_display); } $GLOBALS['dbi']->freeResult($result); unset($result); } while ($GLOBALS['dbi']->moreResults() && $GLOBALS['dbi']->nextResult()); } else { if (isset($result) && $result) { $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); $fields_cnt = count($fields_meta); } $_SESSION['is_multi_query'] = false; $displayResultsObject->setProperties($unlim_num_rows, $fields_meta, $analyzed_sql_results['is_count'], $analyzed_sql_results['is_export'], $analyzed_sql_results['is_func'], $analyzed_sql_results['is_analyse'], $num_rows, $fields_cnt, $GLOBALS['querytime'], $pmaThemeImage, $GLOBALS['text_dir'], $analyzed_sql_results['is_maint'], $analyzed_sql_results['is_explain'], $analyzed_sql_results['is_show'], $showtable, $printview, $url_query, $editable, $browse_dist); $table_html .= $displayResultsObject->getTable($result, $displayParts, $analyzed_sql_results, $is_limited_display); $GLOBALS['dbi']->freeResult($result); } return $table_html; }