function SQL_ESCAPE ($str, $secureString = true, $strip = true) {
// Do we have cache?
if (!isset($GLOBALS['sql_escapes'][''.$str.''])) {
+ // Prepare the string here
+ $str = SQL_PREPARE_SQL_STRING($str);
+
// Secure string first? (which is the default behaviour!)
if ($secureString === true) {
// Then do it here
$result = false;
// Determine index/fulltext/unique word
- $noIndex = (
- (
- strpos($sql, 'INDEX') === false
- ) && (
- strpos($sql, 'KEY') === false
- ) && (
- strpos($sql, 'FULLTEXT') === false
- ) && (
- strpos($sql, 'UNIQUE') === false
- )
+ $isAlterIndex = (
+ (
+ isInString('INDEX', $sql)
+ ) && (
+ isInString('KEY', $sql)
+ ) && (
+ isInString('FULLTEXT', $sql)
+ ) && (
+ isInString('UNIQUE', $sql)
+ )
);
// Extract table name
$tableName = str_replace('`', '', $tableArray[2]);
// Debug log
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sql . ',tableName=' . $tableName . ',tableArray=<pre>' . print_r($tableArray, true) . '</pre>');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sql . ',tableName=' . $tableName . ',tableArray=<pre>' . print_r($tableArray, true) . '</pre>,isAlterIndex=' . intval($isAlterIndex));
// Shall we add/drop?
- if (((strpos($sql, 'ADD') !== false) || (strpos($sql, 'DROP') !== false) || (strpos($sql, 'CHANGE') !== false)) && ($noIndex === true)) {
+ if (((isInString('ADD', $sql)) || (isInString('DROP', $sql)) || (isInString('CHANGE', $sql))) && ($isAlterIndex === false)) {
// Try two columns, one should fix
foreach (array(4,5) as $idx) {
// If an entry is not set, abort here
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'columnName=' . $columnName . ',idx=' . $idx . ',sql=' . $sql . ',hasZeroNums=' . intval(isSqlTableColumnFound($tableName, $columnName)));
// Do we have no entry on ADD or an entry on DROP/CHANGE?
- // 123 4 43 3 4 4 32 23 4 43 3 4 4 32 23 4 43 3 4 4 3 3 3 3 4 4321
- if (((!isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'ADD') !== false)) || ((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'DROP') !== false)) || ((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'CHANGE') !== false) && ($idx == 4) && (!isSqlTableColumnFound($tableName, $tableArray[5])))) {
+ if (((!isSqlTableColumnFound($tableName, $columnName)) && (isInString('ADD', $sql))) || ((isSqlTableColumnFound($tableName, $columnName)) && ((isInString('DROP', $sql)) || ((isInString('CHANGE', $sql)) && ($idx == 4) && ((!isSqlTableColumnFound($tableName, $tableArray[5])) || ($columnName == $tableArray[5])))))) {
// Do the query
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Executing: ' . $sql);
$result = SQL_QUERY($sql, $F, $L, false);
// Skip further attempt(s)
break;
- // 1234 5 54 4 5 5 43 34 5 54 4 5 5 43 3 4 4 32 2 21
- } elseif ((((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'ADD') !== false)) || ((isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'DROP') !== false)) || (strpos($sql, 'CHANGE') !== false)) && ($columnName != 'KEY')) {
+ } elseif ((((isSqlTableColumnFound($tableName, $columnName)) && (isInString('ADD', $sql))) || ((!isSqlTableColumnFound($tableName, $columnName)) && ((isInString('DROP', $sql))) || (isInString('CHANGE', $sql)))) && ($columnName != 'KEY')) {
// Abort here because it is alreay there
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Skipped: sql=' . $sql . ',columnName=' . $columnName . ',idx=' . $idx);
break;
- } elseif ((!isSqlTableColumnFound($tableName, $columnName)) && (strpos($sql, 'DROP') !== false)) {
+ } elseif ((!isSqlTableColumnFound($tableName, $columnName)) && (isInString('DROP', $sql))) {
// Abort here because we tried to drop a column which is not there (never created maybe)
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'No drop: ' . $sql);
break;
logDebugMessage(__FUNCTION__, __LINE__, 'Possible problem: ' . $sql . ',hasZeroNums=' . intval(isSqlTableColumnFound($tableName, $columnName)) . '');
}
} // END - foreach
- } elseif ((getTableType() == 'InnoDB') && (strpos($sql, 'FULLTEXT') !== false)) {
+ } elseif ((getTableType() == 'InnoDB') && (isInString('FULLTEXT', $sql))) {
// Skip this query silently because InnoDB does not understand fulltext indexes
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Skipped FULLTEXT: sql=%s,tableName=%s,hasZeroNums=%d,file=%s,line=%s", $sql, $tableName, intval((is_bool($result)) ? 0 : isSqlTableColumnFound($columnName)), $F, $L));
- } elseif ($noIndex === false) {
+ } elseif ($isAlterIndex === true) {
// And column name as well without backticks
$keyName = str_replace('`', '', $tableArray[5]);
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . ',tableArray=<pre>' . print_r($tableArray, true) . '</pre>');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . ',tableArray=<pre>' . print_r($tableArray, true) . '</pre>');
// Is this "UNIQUE" or so? FULLTEXT has been handled the elseif() block above
if (in_array(strtoupper($tableArray[4]), array('INDEX', 'UNIQUE', 'KEY', 'FULLTEXT'))) {
// Init loop
$begin = 1;
$keyName = ',';
- while (strpos($keyName, ',') !== false) {
+ while (isInString(',', $keyName)) {
// Use last
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . 'begin=' . $begin . ' - BEFORE');
$keyName = str_replace('`', '', $tableArray[count($tableArray) - $begin]);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $keyName . '----------------' . $begin);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . 'begin=' . $begin . ' - BETWEEN');
// Remove brackes
$keyName = str_replace('(', '', str_replace(')', '', $keyName));
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $keyName . '----------------' . $begin);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . 'begin=' . $begin . ' - AFTER');
// Continue
$begin++;
} // END - if
// Shall we run it?
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ', tableArray[3]=' . $tableArray[3] . ',keyName=' . $keyName);
- if ((!isSqlTableIndexAdded($tableName, $tableArray[3], $keyName)) && ($tableArray[3] == 'ADD')) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ', tableArray[3]=' . $tableArray[3] . ',keyName=' . $keyName);
+ if (($tableArray[3] == 'ADD') && (!isSqlTableIndexFound($tableName, $keyName))) {
// Send it to the SQL_QUERY() function to add it
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $sql);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sql . ' - ADDING!');
$result = SQL_QUERY($sql, $F, $L, $enableCodes);
- } elseif ((isSqlTableIndexAdded($tableName, $tableArray[3], $keyName)) && ($tableArray[3] == 'DROP')) {
+ } elseif (($tableArray[3] == 'DROP') && (isSqlTableIndexFound($tableName, $keyName))) {
// Send it to the SQL_QUERY() function to drop it
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $sql);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sql=' . $sql . ' - DROPPING!');
$result = SQL_QUERY($sql, $F, $L, $enableCodes);
} else {
// Not executed
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Not executed: ' . $sql);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Not executed: ' . $sql);
}
} else {
// Other ALTER TABLE query
// Getter for SQL link
function SQL_GET_LINK () {
// Init link
- $link = null;
+ $link = NULL;
// Is it in the globals?
if (isset($GLOBALS['sql_link'])) {
function SQL_PREPARE_SQL_STRING ($sqlString, $enableCodes = true) {
// Is it already cached?
if (!isset($GLOBALS['sql_strings'][$sqlString])) {
- // Compile config+expression code
- $sqlString2 = FILTER_COMPILE_EXPRESSION_CODE(FILTER_COMPILE_CONFIG($sqlString));
+ // Compile URI codes+config+expression code
+ $sqlString2 = FILTER_COMPILE_EXPRESSION_CODE(FILTER_COMPILE_CONFIG(compileUriCode($sqlString)));
// Do final compilation
$GLOBALS['sql_strings'][$sqlString] = doFinalCompilation($sqlString2, false, $enableCodes);
- //die($sqlString.'<br />'.$sqlString2.'<br />'.$GLOBALS['sql_strings'][$sqlString]);
} // END - if
// Return it
// Check if there is a SQL table created
function isSqlTableCreated ($tableName) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ' - ENTERED!');
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$tableName])) {
// Check if the table is there
} // END - if
// Return cache
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName]) . ' - EXIT!');
return $GLOBALS[__FUNCTION__][$tableName];
}
// Is a table column there?
function isSqlTableColumnFound ($tableName, $columnName) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $columName . ' - ENTERED!');
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$tableName][$columnName])) {
// And column name as well
} // END - if
// Return cache
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $columName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName][$columnName]) . ' - EXIT!');
return $GLOBALS[__FUNCTION__][$tableName][$columnName];
}
-// Checks depending on the mode if the table is there
-function isSqlTableIndexAdded ($tableName, $mode, $keyName) {
+// Checks depending on the mode if the index is there
+function isSqlTableIndexFound ($tableName, $keyName) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $keyName . ' - ENTERED!');
// Do we have cache?
- if (!isset($GLOBALS[__FUNCTION__][$tableName][$mode])) {
+ if (!isset($GLOBALS[__FUNCTION__][$tableName][$keyName])) {
// Show indexes
$result = SQL_QUERY_ESC("SHOW INDEX FROM `%s`", array($tableName), __FUNCTION__, __LINE__);
- // Non-skipping is default for ADD
- $GLOBALS[__FUNCTION__][$tableName][$mode] = false;
-
- // But should we DROP?
- if ($mode == 'DROP') {
- // Then skip if nothing found
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Going to drop key ' . $keyName);
- $GLOBALS[__FUNCTION__][$tableName][$mode] = true;
- } // END - if
+ // The column is not found by default
+ $GLOBALS[__FUNCTION__][$tableName][$keyName] = false;
// Walk through all
while ($content = SQL_FETCHARRAY($result)) {
- // Is it found?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'columnName='.$keyName.',content=<pre>' . print_r($content, true) . '</pre>');
- if (($content['Key_name'] == $keyName) && ($mode == 'ADD')) {
- // Skip this query!
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("ADD: Skiped: %s", $sql));
- $GLOBALS[__FUNCTION__][$tableName][$mode] = true;
- break;
- } elseif (($content['Key_name'] == $keyName) && ($mode == 'DROP')) {
- // Don't skip this!
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("DROP: Not skiped: %s", $sql));
- $GLOBALS[__FUNCTION__][$tableName][$mode] = false;
- break;
- }
+ // Add all entries for better caching behavior
+ $GLOBALS[__FUNCTION__][$tableName][$content['Key_name']] = true;
} // END - while
// Free result
SQL_FREERESULT($result);
+ } else {
+ // Cache used
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $keyName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName][$keyName]) . ' - CACHE!');
} // END - if
// Return cache
- return $GLOBALS[__FUNCTION__][$tableName][$mode];
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',columnName=' . $keyName . ',result=' . intval($GLOBALS[__FUNCTION__][$tableName][$keyName]) . ' - EXIT!');
+ return $GLOBALS[__FUNCTION__][$tableName][$keyName];
}
// [EOF]