From 2e28add87b0d3217a42ec80cbf64d1a5d8ba4111 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Chapeaux?= Date: Wed, 1 May 2002 12:03:21 +0000 Subject: [PATCH] Optimization - do not call "mysql_numrows", "mysql_results" and "mysql_fetch_array" on invalid queries --- ChangeLog | 2 ++ db_details.php3 | 5 +---- db_printview.php3 | 2 +- db_stats.php3 | 4 ++-- left.php3 | 4 ++-- libraries/common.lib.php3 | 11 ++++++----- main.php3 | 2 +- read_dump.php3 | 2 +- sql.php3 | 4 ++-- tbl_dump.php3 | 2 +- tbl_indexes.php3 | 7 ++++--- tbl_properties_common.php3 | 3 ++- user_details.php3 | 27 +++++++++++---------------- 13 files changed, 36 insertions(+), 39 deletions(-) diff --git a/ChangeLog b/ChangeLog index 35f67835a..8f0acf316 100755 --- a/ChangeLog +++ b/ChangeLog @@ -20,6 +20,8 @@ $Source$ under php 3.0.12 thanks to Kris Wood . * libraries/common.lib.php3, line 791: fixed a warning thanks to Kris Wood . + * mosts scripts: optimization - do not call "mysql_numrows", + "mysql_results" and "mysql_fetch_array" on invalid queries. 2002-04-30 Loïc Chapeaux * lang/italian.inc.php3: updated thanks to Pietro Danesi. diff --git a/db_details.php3 b/db_details.php3 index 65e7f2b19..60ba8b971 100755 --- a/db_details.php3 +++ b/db_details.php3 @@ -121,7 +121,7 @@ if (PMA_MYSQL_INT_VERSION >= 32303) { } // end if (PMA_MYSQL_INT_VERSION >= 32303) else { $result = mysql_list_tables($db); - $num_tables = @mysql_numrows($result); + $num_tables = ($result) ? @mysql_numrows($result) : 0; for ($i = 0; $i < $num_tables; $i++) { $tables[] = mysql_tablename($result, $i); } @@ -638,9 +638,6 @@ if ($num_tables > 0) { 1) { $colspan = ' colspan="2"'; echo "\n"; diff --git a/db_printview.php3 b/db_printview.php3 index 200ab60ee..86c39886d 100755 --- a/db_printview.php3 +++ b/db_printview.php3 @@ -72,7 +72,7 @@ if (PMA_MYSQL_INT_VERSION >= 32303) { } // end if (PMA_MYSQL_INT_VERSION >= 32303) else { $result = mysql_list_tables($db); - $num_tables = @mysql_numrows($result); + $num_tables = ($result) ? @mysql_numrows($result) : 0; for ($i = 0; $i < $num_tables; $i++) { $tables[] = mysql_tablename($result, $i); } diff --git a/db_stats.php3 b/db_stats.php3 index 1022d91d3..fbf3fccf5 100644 --- a/db_stats.php3 +++ b/db_stats.php3 @@ -228,7 +228,7 @@ if ($num_dbs > 0) { $tables = @mysql_list_tables($db); // Number of tables - $dbs_array[$db][0] = @mysql_numrows($tables); + $dbs_array[$db][0] = ($tables) ? @mysql_numrows($tables) : 0; mysql_free_result($tables); $total_array[0] += $dbs_array[$db][0]; @@ -241,7 +241,7 @@ if ($num_dbs > 0) { $local_query = 'SHOW TABLE STATUS FROM ' . PMA_backquote($db); $result = @mysql_query($local_query); // needs the "@" below otherwise, warnings in case of special DB names - if (@mysql_num_rows($result)) { + if ($result && @mysql_num_rows($result)) { while ($row = mysql_fetch_array($result)) { $dbs_array[$db][1] += $row['Data_length']; $dbs_array[$db][2] += $row['Index_length']; diff --git a/left.php3 b/left.php3 index fc2724887..6db65bbe2 100755 --- a/left.php3 +++ b/left.php3 @@ -207,7 +207,7 @@ if ($num_dbs > 1) { $selected_db = $j; } $tables = @mysql_list_tables($db); - $num_tables = @mysql_numrows($tables); + $num_tables = ($tables) ? @mysql_numrows($tables) : 0; $common_url_query = 'lang=' . $lang . '&server=' . $server . '&db=' . urlencode($db); @@ -374,7 +374,7 @@ if ($num_dbs > 1) { else if ($num_dbs == 1) { $db = $dblist[0]; $tables = @mysql_list_tables($db); - $num_tables = @mysql_numrows($tables); + $num_tables = ($tables) ? @mysql_numrows($tables) : 0; $common_url_query = 'lang=' . $lang . '&server=' . $server . '&db=' . urlencode($db); diff --git a/libraries/common.lib.php3 b/libraries/common.lib.php3 index 725103212..b1b9c3eda 100644 --- a/libraries/common.lib.php3 +++ b/libraries/common.lib.php3 @@ -504,7 +504,7 @@ if (!defined('PMA_COMMON_LIB_INCLUDED')){ if (PMA_MYSQL_INT_VERSION >= 32330) { $local_query = 'SHOW VARIABLES LIKE \'safe_show_database\''; $rs = mysql_query($local_query, $dbh); // Debug: or PMA_mysqlDie('', $local_query, FALSE); - $is_safe_show_dbs = @mysql_result($rs, 0, 'Value'); + $is_safe_show_dbs = ($rs) ? @mysql_result($rs, 0, 'Value') : FALSE; // ... and if on, try to get the available dbs list if ($is_safe_show_dbs && strtoupper($is_safe_show_dbs) != 'OFF') { @@ -529,7 +529,8 @@ if (!defined('PMA_COMMON_LIB_INCLUDED')){ // Access to "mysql" db allowed and dblist still empty -> gets the // usable db list - if (!$dblist_cnt && @mysql_numrows($rs)) { + if (!$dblist_cnt + && ($rs && @mysql_numrows($rs))) { $row = mysql_fetch_array($rs); mysql_free_result($rs); // Correction uva 19991215 @@ -548,7 +549,7 @@ if (!defined('PMA_COMMON_LIB_INCLUDED')){ // lem9: User can be blank (anonymous user) $local_query = 'SELECT DISTINCT Db FROM mysql.db WHERE Select_priv = \'Y\' AND (User = \'' . PMA_sqlAddslashes($cfg['Server']['user']) . '\' OR User = \'\')'; $rs = mysql_query($local_query, $dbh); // Debug: or PMA_mysqlDie('', $local_query, FALSE); - if (@mysql_numrows($rs)) { + if ($rs && @mysql_numrows($rs)) { // Will use as associative array of the following 2 code // lines: // the 1st is the only line intact from before @@ -609,7 +610,7 @@ if (!defined('PMA_COMMON_LIB_INCLUDED')){ // 2. get allowed dbs from the "mysql.tables_priv" table $local_query = 'SELECT DISTINCT Db FROM mysql.tables_priv WHERE Table_priv LIKE \'%Select%\' AND User = \'' . PMA_sqlAddslashes($cfg['Server']['user']) . '\''; $rs = mysql_query($local_query, $dbh); // Debug: or PMA_mysqlDie('', $local_query, FALSE); - if (@mysql_numrows($rs)) { + if ($rs && @mysql_numrows($rs)) { while ($row = mysql_fetch_array($rs)) { if (PMA_isInto($row['Db'], $dblist) == -1) { $dblist[] = $row['Db']; @@ -667,7 +668,7 @@ if (!defined('PMA_COMMON_LIB_INCLUDED')){ // on the server else { $dbs = mysql_list_dbs() or PMA_mysqlDie('', 'mysql_list_dbs()', FALSE, $error_url); - $num_dbs = @mysql_num_rows($dbs); + $num_dbs = ($dbs) ? @mysql_num_rows($dbs) : 0; $real_num_dbs = 0; for ($i = 0; $i < $num_dbs; $i++) { $db_name_tmp = mysql_dbname($dbs, $i); diff --git a/main.php3 b/main.php3 index dd6d75a3e..b3b10ea8e 100755 --- a/main.php3 +++ b/main.php3 @@ -228,7 +228,7 @@ if ($server > 0) { $db_to_create = ''; break; } // end if - elseif (ereg($re . '%|_', $show_grants_dbname) || !mysql_select_db($show_grants_dbname, $userlink) && @mysql_errno() != 1044) { + else if (ereg($re . '%|_', $show_grants_dbname) || !mysql_select_db($show_grants_dbname, $userlink) && @mysql_errno() != 1044) { $show_grants_dbname = ereg_replace($re . '%', '\\1...', ereg_replace($re . '_', '\\1?', $show_grants_dbname)); $db_to_create = $show_grants_dbname; $is_create_priv = TRUE; diff --git a/read_dump.php3 b/read_dump.php3 index 3e5adc185..7a94ed7cf 100644 --- a/read_dump.php3 +++ b/read_dump.php3 @@ -386,7 +386,7 @@ if ($goto == 'tbl_properties.php3') { $goto = 'db_details.php3'; } else { $is_table = @mysql_query('SHOW TABLES LIKE \'' . PMA_sqlAddslashes($table, TRUE) . '\''); - if (!@mysql_numrows($is_table)) { + if (!($is_table && @mysql_numrows($is_table))) { $goto = 'db_details.php3'; unset($table); } diff --git a/sql.php3 b/sql.php3 index 475dc6eae..8ad19c3eb 100755 --- a/sql.php3 +++ b/sql.php3 @@ -283,7 +283,7 @@ else { // Gets the number of rows affected/returned if (!$is_affected) { - $num_rows = @mysql_num_rows($result); + $num_rows = ($result) ? @mysql_num_rows($result) : 0; } else if (!isset($num_rows)) { $num_rows = @mysql_affected_rows(); } @@ -345,7 +345,7 @@ else { $goto = 'db_details.php3'; } else { $is_table = @mysql_query('SHOW TABLES LIKE \'' . PMA_sqlAddslashes($table, TRUE) . '\''); - if (!@mysql_numrows($is_table)) { + if (!($is_table && @mysql_numrows($is_table))) { $goto = 'db_details.php3'; unset($table); } diff --git a/tbl_dump.php3 b/tbl_dump.php3 index 54adf3d43..e91c34a8e 100755 --- a/tbl_dump.php3 +++ b/tbl_dump.php3 @@ -180,7 +180,7 @@ else { // Gets the number of tables if a dump of a database has been required if (!isset($table)) { $tables = mysql_list_tables($db); - $num_tables = @mysql_numrows($tables); + $num_tables = ($tables) ? @mysql_numrows($tables) : 0; } else { $num_tables = 1; $single = TRUE; diff --git a/tbl_indexes.php3 b/tbl_indexes.php3 index c35d497c8..60be3d604 100644 --- a/tbl_indexes.php3 +++ b/tbl_indexes.php3 @@ -39,9 +39,10 @@ if (!defined('PMA_IDX_INCLUDED')) { } // Not a valid table name -> back to the db_details.php3 if (!empty($table)) { - $is_table = @mysql_query("SHOW TABLES LIKE '" . PMA_sqlAddslashes($table, TRUE) . '\''); + $is_table = @mysql_query('SHOW TABLES LIKE \'' . PMA_sqlAddslashes($table, TRUE) . '\''); } - if (empty($table) || !@mysql_numrows($is_table)) { + if (empty($table) + || !($is_table && @mysql_numrows($is_table))) { header('Location: ' . $cfg['PmaAbsoluteUri'] . 'db_details.php3?lang=' . $lang . '&server=' . $server . '&db=' . urlencode($db) . (isset($message) ? '&message=' . urlencode($message) : '') . '&reload=1'); exit(); } else if (isset($is_table)) { @@ -399,7 +400,7 @@ else if (!defined('PMA_IDX_INCLUDED') } echo '

' . "\n"; echo ' ' . sprintf($strAddToIndex, '') . "\n"; - echo '  ' . "\n"; + echo '  ' . "\n"; } else { /** diff --git a/tbl_properties_common.php3 b/tbl_properties_common.php3 index f458e9a2a..4187122c9 100755 --- a/tbl_properties_common.php3 +++ b/tbl_properties_common.php3 @@ -43,7 +43,8 @@ if (!isset($is_table) || !$is_table) { if (!empty($table)) { $is_table = @mysql_query('SHOW TABLES LIKE \'' . PMA_sqlAddslashes($table, TRUE) . '\''); } - if (empty($table) || !@mysql_numrows($is_table)) { + if (empty($table) + || !($is_table && @mysql_numrows($is_table))) { header('Location: ' . $cfg['PmaAbsoluteUri'] . 'db_details.php3?lang=' . $lang . '&server=' . $server . '&db=' . urlencode($db) . (isset($message) ? '&message=' . urlencode($message) : '') . '&reload=1'); exit(); } else if (isset($is_table)) { diff --git a/user_details.php3 b/user_details.php3 index 7645a8e77..909797c76 100644 --- a/user_details.php3 +++ b/user_details.php3 @@ -74,7 +74,7 @@ function PMA_tableGrants(&$host_db_result, $dbcheck = FALSE) { while ($row = (is_array($host_db_result) ? $host_db_result : mysql_fetch_array($host_db_result))) { $local_query = 'SHOW GRANTS FOR \'' . $row['User'] . '\'@\'' . $row['Host'] . '\''; $result = mysql_query($local_query); - $grants_cnt = @mysql_num_rows($result); + $grants_cnt = ($result) ? @mysql_num_rows($result) : 0; if ($grants_cnt) { $i = 0; @@ -221,7 +221,7 @@ function PMA_checkDb($dbcheck) { $local_query = 'SELECT Host, User FROM mysql.user ORDER BY Host, User'; $result = mysql_query($local_query); - $host_usr_cnt = @mysql_num_rows($result); + $host_usr_cnt = ($result) ? @mysql_num_rows($result) : 0; if (!$host_usr_cnt) { return FALSE; @@ -350,7 +350,7 @@ function PMA_normalOperations() ' . htmlspecialchars($row[0]) . '' . "\n"; @@ -505,7 +505,7 @@ function PMA_grantOperations($grants) // } $is_selected_db = FALSE; $result = mysql_query('SHOW DATABASES'); - if (@mysql_num_rows($result)) { + if ($result && @mysql_num_rows($result)) { while ($row = mysql_fetch_row($result)) { $selected = (($row[0] == $dbgrant) ? ' selected="selected"' : ''); if (!empty($selected)) { @@ -544,7 +544,7 @@ function PMA_grantOperations($grants) // } if (isset($dbgrant)) { $result = mysql_query('SHOW TABLES FROM ' . PMA_backquote($dbgrant)); - if (@mysql_num_rows($result)) { + if ($result && @mysql_num_rows($result)) { while ($row = mysql_fetch_row($result)) { $selected = ((isset($tablegrant) && $row[0] == $tablegrant) ? ' selected="selected"' : ''); echo ' '; @@ -580,7 +580,7 @@ function PMA_grantOperations($grants) } else { $result = mysql_query('SHOW COLUMNS FROM ' . PMA_backquote($dbgrant) . '.' . PMA_backquote($tablegrant)); - if (@mysql_num_rows($result)) { + if ($result && @mysql_num_rows($result)) { echo ' ' . '