// Remove \t, \n and \r from queries they may confuse some MySQL version I have heard
$sqlString = str_replace("\t", ' ', str_replace("\n", ' ', str_replace("\r", ' ', $sqlString)));
- // Replace {PER}
- $sqlString = str_replace('{PER}', '%', $sqlString);
-
// Compile config entries out
- $sqlString = SQL_PREPARE_SQL_STRING($sqlString);
+ $GLOBALS['last_sql'] = SQL_PREPARE_SQL_STRING($sqlString);
// Starting time
$querytimeBefore = microtime(true);
// Run SQL command
- //* DEBUG: */ print('F=' . basename($F) . ',L=' . $L . 'sql=' . htmlentities($sqlString) . '<br />');
- $result = mysql_query($sqlString, SQL_GET_LINK())
- or debug_report_bug(__FUNCTION__, __LINE__, 'file='. $F . ',line=' . $L . ':mysql_error()=' . mysql_error() . "\n".
-'Query string:' . $sqlString);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sqlString . ',numRows=' . SQL_NUMROWS($result) . ',affected=' . SQL_AFFECTEDROWS());
+ //* DEBUG: */ print('F=' . basename($F) . ',L=' . $L . 'sql=' . htmlentities($GLOBALS['last_sql']) . '<br />');
+ $result = mysql_query($GLOBALS['last_sql'], SQL_GET_LINK())
+ or debug_report_bug($F, $L, 'file='. $F . ',line=' . $L . ':mysql_error()=' . mysql_error() . "\n".
+'Query string:' . $GLOBALS['last_sql']);
+ //* DEBUG: */ logDebugMessage($F, $L, 'sql=' . $GLOBALS['last_sql'] . ',affected=' . SQL_AFFECTEDROWS());
// Calculate query time
$queryTime = microtime(true) - $querytimeBefore;
// Add this query to array including timing
- addSqlToDebug($result, $sqlString, $queryTime, $F, $L);
+ addSqlToDebug($result, $GLOBALS['last_sql'], $queryTime, $F, $L);
// Save last successfull query
- setConfigEntry('db_last_query', $sqlString);
+ setConfigEntry('db_last_query', $GLOBALS['last_sql']);
// Count all query times
incrementConfigEntry('sql_time', $queryTime);
fwrite($fp, 'Module=' . getModule() . "\n");
$GLOBALS['sql_first_entry'] = true;
} // END - if
- fwrite($fp, $F . '(LINE=' . $L . '|NUM=' . SQL_NUMROWS($result) . '|AFFECTED=' . SQL_AFFECTEDROWS() . '|QUERYTIME:' . $queryTime . '): ' . str_replace("\r", '', str_replace("\n", ' ', $sqlString)) . "\n");
+ fwrite($fp, $F . '(LINE=' . $L . '|NUM=' . SQL_NUMROWS($result) . '|AFFECTED=' . SQL_AFFECTEDROWS() . '|QUERYTIME:' . $queryTime . '): ' . str_replace("\r", '', str_replace("\n", ' ', $GLOBALS['last_sql'])) . "\n");
fclose($fp);
} // END - if
}
// SQL num rows
-function SQL_NUMROWS ($result) {
+function SQL_NUMROWS ($resource) {
// Valid link resource?
if (!SQL_IS_LINK_UP()) return false;
$lines = false;
// Is the result a valid resource?
- if (is_resource($result)) {
+ if (is_resource($resource)) {
// Get the count of rows from database
- $lines = mysql_num_rows($result);
+ $lines = mysql_num_rows($resource);
} else {
// No resource given, please fix this
- trigger_error('No resource given! result[]=' . gettype($result));
+ debug_report_bug(__FUNCTION__, __LINE__, 'No resource given! result[]=' . gettype($resource) . ',last_sql=' . $GLOBALS['last_sql']);
}
// Return lines
}
// SQL fetch row
-function SQL_FETCHROW ($result) {
+function SQL_FETCHROW ($resource) {
// Is a result resource set?
- if ((!is_resource($result)) || (!SQL_IS_LINK_UP())) return false;
+ if ((!is_resource($resource)) || (!SQL_IS_LINK_UP())) return false;
// Fetch the data and return it
- return mysql_fetch_row($result);
+ return mysql_fetch_row($resource);
}
// SQL fetch array
-function SQL_FETCHARRAY ($res, $nr=0, $remove_numerical=true) {
+function SQL_FETCHARRAY ($res, $nr=0) {
// Is a result resource set?
if ((!is_resource($res)) || (!SQL_IS_LINK_UP())) return false;
- // Initialize array
- $row = array();
-
// Load row from database
- $row = mysql_fetch_array($res);
+ $row = mysql_fetch_assoc($res);
// Return only arrays here
if (is_array($row)) {
- // Shall we remove numerical data here automatically?
- if ($remove_numerical) {
- // So let's remove all numerical elements to save memory!
- $max = count($row);
- for ($idx = '0'; $idx < ($max / 2); $idx++) {
- // Remove entry
- unset($row[$idx]);
- } // END - for
- } // END - if
-
// Return row
return $row;
} else {
}
// SQL result
-function SQL_RESULT ($res, $row, $field = '0') {
- // Is $res valid?
- if ((!is_resource($res)) || (!SQL_IS_LINK_UP())) return false;
+function SQL_RESULT ($resource, $row, $field = '0') {
+ // Is $resource valid?
+ if ((!is_resource($resource)) || (!SQL_IS_LINK_UP())) return false;
+
+ // Run the result command
+ $result = mysql_result($resource, $row, $field);
- // Run the result command and return the result
- $result = mysql_result($res, $row, $field);
+ // ... and return the result
return $result;
}
}
// SQL free result
-function SQL_FREERESULT ($result) {
- if ((!is_resource($result)) || (!SQL_IS_LINK_UP())) {
+function SQL_FREERESULT ($resource) {
+ if ((!is_resource($resource)) || (!SQL_IS_LINK_UP())) {
// Abort here
return false;
} // END - if
- $res = mysql_free_result($result);
+ // Free result
+ $res = mysql_free_result($resource);
+
+ // And return that result of freeing it...
return $res;
}
// SQL string escaping
-function SQL_QUERY_ESC ($qstring, $data, $F, $L, $run=true, $strip=true, $secure=true) {
+function SQL_QUERY_ESC ($sqlString, $data, $F, $L, $run = true, $strip = true, $secure = true) {
// Link is there?
if ((!SQL_IS_LINK_UP()) || (!is_array($data))) return false;
// Escape all data
- $dataSecured['__sql_string'] = $qstring;
+ $dataSecured['__sql_string'] = $sqlString;
foreach ($data as $key => $value) {
$dataSecured[$key] = SQL_ESCAPE($value, $secure, $strip);
} // END - foreach
// Debugging
//
- //* DEBUG: */ $fp = fopen(getConfig('CACHE_PATH') . 'escape_debug.log', 'a') or debug_report_bug(__FUNCTION__, __LINE__, "Cannot write debug.log!");
- //* DEBUG: */ fwrite($fp, $F.'('.$L."): ".str_replace("\r", '', str_replace("\n", ' ', $eval))."\n");
+ //* DEBUG: */ $fp = fopen(getConfig('CACHE_PATH') . 'escape_debug.log', 'a') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write debug.log!');
+ //* DEBUG: */ fwrite($fp, $F . '(' . $L . '): ' . str_replace("\r", '', str_replace("\n", ' ', $eval)) . "\n");
//* DEBUG: */ fclose($fp);
if ($run === true) {
}
// Escape a string for the database
-function SQL_ESCAPE ($str, $secureString=true, $strip=true) {
+function SQL_ESCAPE ($str, $secureString = true, $strip = true) {
// Do we have cache?
if (!isset($GLOBALS['sql_escapes'][''.$str.''])) {
// Secure string first? (which is the default behaviour!)
function SQL_PREPARE_SQL_STRING ($sqlString) {
// Is it already cached?
if (!isset($GLOBALS['sql_strings'][$sqlString])) {
- // No, then generate the eval() command
- $eval = '$sql = "' . FILTER_COMPILE_EXPRESSION_CODE(FILTER_COMPILE_CONFIG(escapeQuotes($sqlString))) . '";';
- eval($eval);
+ // Compile config+expression code
+ $sqlString2 = FILTER_COMPILE_EXPRESSION_CODE(FILTER_COMPILE_CONFIG($sqlString));
- // ... and set it
- $GLOBALS['sql_strings'][$sqlString] = $sql;
+ // Do final compilation
+ $GLOBALS['sql_strings'][$sqlString] = doFinalCompilation($sqlString2, false);
} // END - if
// Return it