/** * affected_rows test * * @dataProvider providerAffectedRows */ public function testAffectedRows($rows, $output) { $this->object = new PMA_Message(); $msg = $this->object->affected_rows($rows); echo $this->object->addMessage($msg); $this->expectOutputString($output); $this->object->display(); }
} else { $message = PMA_Message::inserted_rows($num_rows); } $insert_id = PMA_DBI_insert_id(); if ($insert_id != 0) { // insert_id is id of FIRST record inserted in one insert, so if we inserted multiple rows, we had to increment this $message->addMessage('[br]'); // need to use a temporary because the Message class // currently supports adding parameters only to the first // message $_inserted = PMA_Message::notice(__('Inserted row id: %1$d')); $_inserted->addParam($insert_id + $num_rows - 1); $message->addMessage($_inserted); } } elseif ($is_affected) { $message = PMA_Message::affected_rows($num_rows); // Ok, here is an explanation for the !$is_select. // The form generated by sql_query_form.lib.php // and db_sql.php has many submit buttons // on the same form, and some confusion arises from the // fact that $message_to_show is sent for every case. // The $message_to_show containing a success message and sent with // the form should not have priority over errors } elseif (! empty($message_to_show) && ! $is_select) { $message = PMA_Message::rawSuccess(htmlspecialchars($message_to_show)); } elseif (! empty($GLOBALS['show_as_php'])) { $message = PMA_Message::success(__('Showing as PHP code')); } elseif (isset($GLOBALS['show_as_php'])) { /* User disable showing as PHP, query is only displayed */ $message = PMA_Message::notice(__('Showing SQL query'));
$last_message->addParam($insert_id); $last_messages[] = $last_message; } PMA_DBI_free_result($result); } // end if foreach (PMA_DBI_get_warnings() as $warning) { $warning_messages[] = PMA_Message::sanitize($warning['Level'] . ': #' . $warning['Code'] . ' ' . $warning['Message']); } unset($result); } unset($single_query, $query); if ($is_insert && count($value_sets) > 0) { $message = PMA_Message::inserted_rows($total_affected_rows); } else { $message = PMA_Message::affected_rows($total_affected_rows); } $message->addMessages($last_messages, '<br />'); if (!empty($warning_messages)) { $message->addMessages($warning_messages, '<br />'); $message->isError(true); } if (!empty($error_messages)) { $message->addMessages($error_messages); $message->isError(true); } unset($error_messages, $warning_messages, $total_affected_rows, $last_messages, $last_message); if ($GLOBALS['is_ajax_request'] == true) { /** * If we are in grid editing, we need to process the relational and * transformed fields, if they were edited. After that, output the correct
/** * Runs query inside import buffer. This is needed to allow displaying * of last SELECT, SHOW or HANDLER results and similar nice stuff. * * @param string $sql query to run * @param string $full query to display, this might be commented * @param bool $controluser whether to use control user for queries * * @access public */ function PMA_importRunQuery($sql = '', $full = '', $controluser = false) { global $import_run_buffer, $go_sql, $complete_query, $display_query, $sql_query, $my_die, $error, $reload, $last_query_with_results, $skip_queries, $executed_queries, $max_sql_len, $read_multiply, $cfg, $sql_query_disabled, $db, $run_query, $is_superuser; $read_multiply = 1; if (isset($import_run_buffer)) { // Should we skip something? if ($skip_queries > 0) { $skip_queries--; } else { if (!empty($import_run_buffer['sql']) && trim($import_run_buffer['sql']) != '') { $max_sql_len = max($max_sql_len, strlen($import_run_buffer['sql'])); if (!$sql_query_disabled) { $sql_query .= $import_run_buffer['full']; } if (!$cfg['AllowUserDropDatabase'] && !$is_superuser && preg_match('@^[[:space:]]*DROP[[:space:]]+(IF EXISTS[[:space:]]+)?DATABASE @i', $import_run_buffer['sql'])) { $GLOBALS['message'] = PMA_Message::error(__('"DROP DATABASE" statements are disabled.')); $error = true; } else { $executed_queries++; if ($run_query && $GLOBALS['finished'] && empty($sql) && !$error && (!empty($import_run_buffer['sql']) && preg_match('/^[\\s]*(SELECT|SHOW|HANDLER)/i', $import_run_buffer['sql']) || $executed_queries == 1)) { $go_sql = true; if (!$sql_query_disabled) { $complete_query = $sql_query; $display_query = $sql_query; } else { $complete_query = ''; $display_query = ''; } $sql_query = $import_run_buffer['sql']; // If a 'USE <db>' SQL-clause was found, set our current $db to the new one list($db, $reload) = PMA_lookForUse($import_run_buffer['sql'], $db, $reload); } elseif ($run_query) { if ($controluser) { $result = PMA_query_as_controluser($import_run_buffer['sql']); } else { $result = PMA_DBI_try_query($import_run_buffer['sql']); } $msg = '# '; if ($result === false) { // execution failed if (!isset($my_die)) { $my_die = array(); } $my_die[] = array('sql' => $import_run_buffer['full'], 'error' => PMA_DBI_getError()); if ($cfg['VerboseMultiSubmit']) { $msg .= __('Error'); } if (!$cfg['IgnoreMultiSubmitErrors']) { $error = true; return; } } elseif ($cfg['VerboseMultiSubmit']) { $a_num_rows = (int) @PMA_DBI_num_rows($result); $a_aff_rows = (int) @PMA_DBI_affected_rows(); if ($a_num_rows > 0) { $msg .= __('Rows') . ': ' . $a_num_rows; $last_query_with_results = $import_run_buffer['sql']; } elseif ($a_aff_rows > 0) { $message = PMA_Message::affected_rows($a_aff_rows); $msg .= $message->getMessage(); } else { $msg .= __('MySQL returned an empty result set (i.e. zero rows).'); } } if (!$sql_query_disabled) { $sql_query .= $msg . "\n"; } // If a 'USE <db>' SQL-clause was found and the query succeeded, set our current $db to the new one if ($result != false) { list($db, $reload) = PMA_lookForUse($import_run_buffer['sql'], $db, $reload); } if ($result != false && preg_match('@^[\\s]*(DROP|CREATE)[\\s]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@im', $import_run_buffer['sql'])) { $reload = true; } } // end run query } // end if not DROP DATABASE // end non empty query } elseif (!empty($import_run_buffer['full'])) { if ($go_sql) { $complete_query .= $import_run_buffer['full']; $display_query .= $import_run_buffer['full']; } else { if (!$sql_query_disabled) { $sql_query .= $import_run_buffer['full']; } } } // check length of query unless we decided to pass it to sql.php // (if $run_query is false, we are just displaying so show // the complete query in the textarea) if (!$go_sql && $run_query) { if ($cfg['VerboseMultiSubmit'] && !empty($sql_query)) { if (strlen($sql_query) > 50000 || $executed_queries > 50 || $max_sql_len > 1000) { $sql_query = ''; $sql_query_disabled = true; } } else { if (strlen($sql_query) > 10000 || $executed_queries > 10 || $max_sql_len > 500) { $sql_query = ''; $sql_query_disabled = true; } } } } // end do query (no skip) } // end buffer exists // Do we have something to push into buffer? if (!empty($sql) || !empty($full)) { $import_run_buffer = array('sql' => $sql, 'full' => $full); } else { unset($GLOBALS['import_run_buffer']); } }