improved the way the mysql_affected_rows is used

This commit is contained in:
Loïc Chapeaux
2001-08-20 22:07:39 +00:00
parent 987ac8e8ac
commit edbf058565
2 changed files with 38 additions and 19 deletions

View File

@@ -6,9 +6,9 @@ $Id$
$Source$
2001-08-20 Olivier M<>ller <om@omnis.ch>
* db_stats.php3: new file and feature (sorry :) : simply display
an overview of all databases with their respective size + server total.
* lang/*: new string $strDatabasesStats
* db_stats.php3: new file and feature (sorry :) : simply display an
overview of all databases with their respective size + server total.
* lang/*: new string $strDatabasesStats.
2001-08-20 Marc Delisle <lem9@users.sourceforge.net>
* config.inc.php3: $cfgProtectBlob is now TRUE by default, to help against
@@ -36,6 +36,7 @@ $Source$
* lib.inc.php3, lines 266-277; config.lib.php3, lines 43, 57 & 70;
Documentation.html, lines 273-278 & 655-658: merged the socket patch from
Dan Allen <bigredlinux@yahoo.com>.
* sql.php3: improved the way the mysql_affected_rows is used.
2001-08-19 Olivier M<>ller <om@omnis.ch>
* db_readdump.php3: if file contains mutiple queries, only show this line:
@@ -53,7 +54,7 @@ $Source$
* main.php3; db_details.php3; tbl_properties.php3; db_readdump.php3;
lib.inc.php3: once a query has been executed phpMyAdmin now moves back
to the calling script (rather than db_details.php3 everytime) as soon as
the current database/table exists, else it moves back to a "parent"
the current database/table exists, else it moves back to a "parent"
script (the welcome page/'db_details.php3' if the current
database/table has has been dropped.
* header.inc.php3, lines 63-64; sql.php3; db_details.php3;
@@ -61,7 +62,7 @@ $Source$
to the calling script (and not the target one used only if this statement
is executed).
* db_readdump.php3: improved Olivier's improvement for mutiple queries (see
before).
before).
* lib.inc.php3, line 524: beautify a bit the way the query is displayed.
* lang/english.inc.php3; lang/french.inc.php3: put $strInstructions at its
right place.

View File

@@ -59,12 +59,12 @@ if (isset($btnDrop) && $btnDrop == $strNo) {
/**
* Defines some "properties" of the sql query to submit
*/
$do_confirm = ($cfgConfirm
&& !isset($btnDrop)
&& eregi('DROP +(TABLE|DATABASE)|ALTER TABLE +[[:alnum:]_`]* +DROP|DELETE FROM', $sql_query));
$is_select = eregi('^SELECT ', $sql_query);
$is_count = ($is_select && eregi('^SELECT COUNT\((.*\.+)?\*\) FROM ', $sql_query));
$is_delupd = eregi('^(DELETE|UPDATE) ', $sql_query);
$do_confirm = ($cfgConfirm
&& !isset($btnDrop)
&& eregi('DROP +(TABLE|DATABASE)|ALTER TABLE +[[:alnum:]_`]* +DROP|DELETE FROM', $sql_query));
$is_select = eregi('^SELECT ', $sql_query);
$is_count = ($is_select && eregi('^SELECT COUNT\((.*\.+)?\*\) FROM ', $sql_query));
$is_affected = eregi('^(DELETE|INSERT|LOAD DATA|UPDATE) ', $sql_query);
/**
@@ -109,7 +109,7 @@ else {
$sql_query = stripslashes($sql_query);
}
//defines some variables
// Defines some variables
// loic1: A table have to be created -> left frame should be reloaded
if (!empty($reload) && eregi('^CREATE TABLE (.*)', $sql_query)) {
$reload = 'true';
@@ -128,8 +128,23 @@ else {
$full_sql_query = $sql_query . $sql_limit_to_append;
}
// Executes the query
mysql_select_db($db);
// If the query is a DELETE query with no WHERE clause, get the number of
// rows that will be deleted (mysql_affected_rows will always return 0 in
// this case)
if ($is_affected
&& eregi('^DELETE( .+)?( FROM (.+))$', $sql_query, $parts)
&& !eregi(' WHERE ', $parts[3])) {
$OPresult = @mysql_query('SELECT COUNT(*) as count' . $parts[2]);
if ($OPresult) {
$num_rows = mysql_result($OPresult, 0, 'count');
} else {
$num_rows = 0;
}
}
// Executes the query
$result = @mysql_query($full_sql_query);
// Displays an error message if required and stop parsing the script
@@ -139,9 +154,12 @@ else {
mysql_die($error, $full_sql_query);
}
// Gets the number of rows returned ('@' is required because mysql_num_rows
// ran on queries that are not 'SELECT' statements returns an error
$num_rows = @mysql_num_rows($result);
// Gets the number of rows affected/returned
if (!$is_affected) {
$num_rows = @mysql_num_rows($result);
} else if (!isset($num_rows)) {
$num_rows = @mysql_affected_rows();
}
// Counts the total number of rows for the same 'SELECT' query without the
// 'LIMIT' clause that may have been programatically added
@@ -164,10 +182,10 @@ else {
} // end rows total count
// No rows returned -> move back to the calling page
if ($num_rows < 1) {
if ($num_rows < 1 || $is_affected) {
if (file_exists('./' . $goto)) {
if ($is_delupd) {
$message = $strAffectedRows . '&nbsp;' . mysql_affected_rows();
if ($is_affected) {
$message = $strAffectedRows . '&nbsp;' . $num_rows;
} else if (!empty($zero_rows)) {
$message = $zero_rows;
} else {