X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fdb%2Flib-mysql3.php;h=8d0ee5f467477c1b0700e9800f285203f611c026;hp=c2d781c655672cef838422009c56b92c9803410e;hb=f18a3b60125c8c65861e3205da40447b227f89c9;hpb=6586600d8020147192e5f28ca2a3a0153f774d3c diff --git a/inc/db/lib-mysql3.php b/inc/db/lib-mysql3.php index c2d781c655..8d0ee5f467 100644 --- a/inc/db/lib-mysql3.php +++ b/inc/db/lib-mysql3.php @@ -39,7 +39,10 @@ if (!defined('__SECURITY')) { // SQL queries function SQL_QUERY ($sql_string, $F, $L) { - global $link, $CSS, $_CONFIG, $OK; + global $link, $CSS, $OK; + + // Link is up? + if (!is_resource($link)) return false; // Remove \t, \n and \r from queries they may confuse some MySQL version I have heard $sql_string = str_replace("\t", " ", str_replace("\n", " ", str_replace("\r", " ", $sql_string))); @@ -47,10 +50,13 @@ function SQL_QUERY ($sql_string, $F, $L) { // Starting time $querytimeBefore = array_sum(explode(' ', microtime())); + // Replace {!_MYSQL_PREFIX!} with constant, closes #84. Thanks to profi-concept + $sql_string = str_replace("{!_MYSQL_PREFIX!}", constant('_MYSQL_PREFIX'), $sql_string); + // Run SQL command //* DEBUG: */ echo $sql_string."
\n"; - $result = @mysql_query($sql_string, $link) - or ADD_FATAL($F." (".$L."):".mysql_error()."
+ $result = mysql_query($sql_string, $link) + or addFatalMessage($F." (".$L."):".mysql_error()."
Query string:
".$sql_string); @@ -61,14 +67,13 @@ Query string:
$queryTime = $querytimeAfter - $querytimeBefore; // Save last successfull query - $_CONFIG['db_last_query'] = $sql_string; + setConfigEntry('db_last_query', $sql_string); // Count this query - if (!isset($_CONFIG['sql_count'])) $_CONFIG['sql_count'] = 0; - $_CONFIG['sql_count']++; + incrementConfigEntry('sql_count'); // Debug output - //* DEBUG: */ print "Query=
".$sql_string."
, affected=".SQL_AFFECTEDROWS().", numrows=".SQL_NUMROWS($result)."
\n"; + //* DEBUG: */ print "Query=
".$sql_string."
, affected=".SQL_AFFECTEDROWS().", numrows=".SQL_NUMROWS($result)."
\n"; if (($CSS != "1") && ($CSS != "-1") && (isBooleanConstantAndTrue('DEBUG_MODE')) && (isBooleanConstantAndTrue('DEBUG_SQL'))) { // @@ -85,12 +90,12 @@ Query string:
} // END - if // Count DB hits - if (!isset($_CONFIG['db_hits_run'])) { + if (!isConfigEntrySet('db_hits_run')) { // Count in dummy variable - $_CONFIG['db_hits_run'] = 1; + setConfigEntry('db_hits_run', 1); } else { // Count to config array - $_CONFIG['db_hits_run']++; + incrementConfigEntry('db_hits_run'); } // Return the result @@ -98,11 +103,11 @@ Query string:
} // SQL num rows -function SQL_NUMROWS($result) { +function SQL_NUMROWS ($result) { // Is the result a valid resource? if (is_resource($result)) { // Get the count of rows from database - $lines = @mysql_num_rows($result); + $lines = mysql_num_rows($result); // Is the result empty? Then we have an error! if (empty($lines)) $lines = 0; @@ -121,7 +126,7 @@ function SQL_AFFECTEDROWS() { if (!is_resource($link)) return false; // Get affected rows - $lines = @mysql_affected_rows($link); + $lines = mysql_affected_rows($link); // Return it return $lines; @@ -135,7 +140,7 @@ function SQL_FETCHROW($result) { // Is a result resource set? if (!is_resource($result)) return false; - $DATA = @mysql_fetch_row($result); + $DATA = mysql_fetch_row($result); return $DATA; } @@ -148,7 +153,7 @@ function SQL_FETCHARRAY($res, $nr=0, $remove_numerical=true) { $row = array(); // Load row from database - $row = @mysql_fetch_array($res); + $row = mysql_fetch_array($res); // Return only arrays here if (is_array($row)) { @@ -171,69 +176,74 @@ function SQL_FETCHARRAY($res, $nr=0, $remove_numerical=true) { } // SQL result -function SQL_RESULT($res, $row, $field) { - $result = @mysql_result($res, $row, $field); +function SQL_RESULT ($res, $row, $field) { + $result = mysql_result($res, $row, $field); return $result; } // SQL connect -function SQL_CONNECT($host, $login, $password, $F, $L) { - $connect = @mysql_connect($host, $login, $password) or ADD_FATAL($F." (".$L."):".mysql_error()); +function SQL_CONNECT ($host, $login, $password, $F, $L) { + $connect = mysql_connect($host, $login, $password) or addFatalMessage($F." (".$L."):".mysql_error()); return $connect; } // SQL select database -function SQL_SELECT_DB($dbName, $link, $F, $L) { - $select = false; - if (is_resource($link)) { - $select = @mysql_select_db($dbName, $link) or ADD_FATAL($F." (".$L."):".mysql_error()); - } - return $select; +function SQL_SELECT_DB ($dbName, $link, $F, $L) { + // Is there still a valid link? If not, skip it. + if (!is_resource($link)) return false; + + return mysql_select_db($dbName, $link) or addFatalMessage($F." (".$L."):".mysql_error()); } // SQL close link -function SQL_CLOSE(&$link, $F, $L) { - global $_CONFIG, $cacheInstance, $cacheArray; +function SQL_CLOSE (&$link, $F, $L) { + global $cacheInstance, $cacheArray; - // Is there still a valid link? if (!is_resource($link)) { // Skip double close return false; } // END - if // Do we need to update cache/db counter? - //* DEBUG: */ echo "DB=".$_CONFIG['db_hits'].",CACHE=".$_CONFIG['cache_hits']."
\n"; - if ((GET_EXT_VERSION("cache") >= "0.0.7") && (isset($_CONFIG['db_hits'])) && (isset($_CONFIG['cache_hits'])) && (is_object($cacheInstance))) { + //* DEBUG: */ echo "DB=".getConfig('db_hits').",CACHE=".getConfig('cache_hits')."
\n"; + if ((GET_EXT_VERSION("cache") >= "0.0.7") && (getConfig('db_hits') > 0) && (getConfig('cache_hits') > 0) && (is_object($cacheInstance))) { // Add new hits - $_CONFIG['db_hits'] += $_CONFIG['db_hits_run']; + incrementConfigEntry('db_hits', getConfig('db_hits_run')); // Update counter for db/cache - UPDATE_CONFIG(array("db_hits", "cache_hits"), array(bigintval($_CONFIG['db_hits']), bigintval($_CONFIG['cache_hits']))); + UPDATE_CONFIG(array("db_hits", "cache_hits"), array(bigintval(getConfig('db_hits')), bigintval(getConfig('cache_hits')))); } // END - if // Close database link and forget the link - $close = @mysql_close($link) or ADD_FATAL($F." (".$L."):".mysql_error()); + $close = mysql_close($link) or addFatalMessage($F." (".$L."):".mysql_error()); $link = null; return $close; } + // SQL free result -function SQL_FREERESULT($result) { +function SQL_FREERESULT ($result) { if (!is_resource($result)) { // Abort here return false; } // END - if - $res = @mysql_free_result($result); + $res = mysql_free_result($result); return $res; } + // SQL string escaping -function SQL_QUERY_ESC($qstring, $data, $file, $line, $run=true, $strip=true) { +function SQL_QUERY_ESC ($qstring, $data, $file, $line, $run=true, $strip=true) { global $link; + // Link is there? + if (!is_resource($link)) return false; + + // Init variable + $query = "failed"; + if ($strip) { $strip = "true"; } else { $strip = "false"; } - $query = ""; $eval = "\$query = sprintf(\"".$qstring."\""; foreach ($data as $var) { if ((!empty($var)) || ($var === 0)) { @@ -251,14 +261,18 @@ function SQL_QUERY_ESC($qstring, $data, $file, $line, $run=true, $strip=true) { //* DEBUG: */ fclose($fp); // Run the code - @eval($eval); + eval($eval); // Was the eval() command fine? - if (empty($query)) { + if ($query == "failed") { // Something went wrong? - print "eval=".htmlentities($eval)."
";
-		debug_print_backtrace();
-		die("
"); + printf("eval=%s\n
%s
", + htmlentities($eval), + debug_get_printable_backtrace() + ); + + // Abort further code executions + exit; } // END - if if ($run) { @@ -269,12 +283,16 @@ function SQL_QUERY_ESC($qstring, $data, $file, $line, $run=true, $strip=true) { return $query; } } + // Get ID from last INSERT command -function SQL_INSERTID() { - return @mysql_insert_id(); +function SQL_INSERTID () { + global $link; + if (!is_resource($link)) return false; + return mysql_insert_id(); } + // Escape a string for the database -function SQL_ESCAPE($str, $secureString=true,$strip=true) { +function SQL_ESCAPE ($str, $secureString=true,$strip=true) { global $link; // Secure string first? (which is the default behaviour!) @@ -300,18 +318,37 @@ function SQL_ESCAPE($str, $secureString=true,$strip=true) { return addslashes($str); } } + // SELECT query string from table, columns and so on... ;-) function SQL_RESULT_FROM_ARRAY ($table, $columns, $idRow, $id, $F, $L) { + // Is columns an array? + if (!is_array($columns)) { + // No array + trigger_error(sprintf("columns is not array. %s!=array", gettype($columns))); + } // END - if + // Prepare the SQL statement - $SQL = "SELECT ".implode(", ", $columns)." FROM "._MYSQL_PREFIX."_".$table." WHERE ".$idRow."=%s LIMIT 1"; + $SQL = "SELECT `".implode("`, `", $columns)."` FROM `{!_MYSQL_PREFIX!}_%s` WHERE ``='%s' LIMIT 1"; // Return the result - return SQL_QUERY_ESC($SQL, array(bigintval($id)), $F, $L); + return SQL_QUERY_ESC($SQL, + array( + bigintval($id), + $table, + $idRow + ), $F, $L); } + // ALTER TABLE wrapper function -function SQL_ALTER_TABLE($sql, $F, $L) { - // Shall we add? - if (eregi("ADD", $sql) > 0) { +function SQL_ALTER_TABLE ($sql, $F, $L) { + // This is the default result... + $result = false; + + // Determine index/fulltext/unique word + $noIndex = ((eregi("INDEX", $sql) == false) && (eregi("FULLTEXT", $sql) == false) && (eregi("UNIQUE", $sql) == false); + + // Shall we add/drop? + if (((eregi("ADD", $sql) > 0) || (eregi("DROP", $sql) > 0)) && ($noIndex)) { // Extract table name $tableArray = explode(" ", $sql); $tableName = str_replace("`", "", $tableArray[2]); @@ -323,15 +360,19 @@ function SQL_ALTER_TABLE($sql, $F, $L) { $result = SQL_QUERY_ESC("SHOW COLUMNS FROM %s LIKE '%s'", array($tableName, $columnName), $F, $L); - // Do we have no entry? - if (SQL_NUMROWS($result) == 0) { + // Do we have no entry on ADD or an entry on DROP? + // 123 4 4 3 3 4 4 32 23 4 4 3 3 4 4 321 + if (((SQL_NUMROWS($result) == 0) && (eregi("ADD", $sql) > 0)) || ((SQL_NUMROWS($result) == 1) && (eregi("DROP", $sql) > 0))) { // Do the query - return SQL_QUERY($sql, $F, $L, false); + $result = SQL_QUERY($sql, $F, $L, false); } // END - if } else { // Send it to the SQL_QUERY() function - return SQL_QUERY($sql, $F, $L, false); + $result = SQL_QUERY($sql, $F, $L, false); } + + // Return result + return $result; } // ?>