X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fsql-functions.php;h=bbd3036c38c75a9d01b7ee72833c54f10e9292f4;hb=ecad6939034794c5f68007648fc37c839a9837dc;hp=75118871d76f1209baddcd6d62cbff808b1cf8c7;hpb=6f9f29d5caee60a2cceae33a7a53e1b4c7319a0c;p=mailer.git diff --git a/inc/sql-functions.php b/inc/sql-functions.php index 75118871d7..bbd3036c38 100644 --- a/inc/sql-functions.php +++ b/inc/sql-functions.php @@ -16,7 +16,7 @@ * $Author:: $ * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009 - 2011 by Mailer Developer Team * + * Copyright (c) 2009 - 2012 by Mailer Developer Team * * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -42,10 +42,11 @@ if (!defined('__SECURITY')) { // Init SQLs array function initSqls () { - setSqlsArray(array()); + // Init generic array + setSqlsArray(array('generic' => array())); } -// Checks wether the sqls array is initialized +// Checks whether the sqls array is initialized function isSqlsInitialized () { return ((isset($GLOBALS['sqls'])) && (is_array($GLOBALS['sqls']))); } @@ -69,7 +70,7 @@ function getSqls () { // Add an SQL to the list function addSql ($sql) { //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("sql=%s, count=%d", $sql, countSqls())); - $GLOBALS['sqls']['generic'][] = (string) $sql; + array_push($GLOBALS['sqls']['generic'], $sql); } // Merge SQLs together @@ -112,7 +113,7 @@ function countSqls () { return $count; } -// Checks wether the SQLs array is filled +// Checks whether the SQLs array is filled function isSqlsValid () { //* DEBUG: */ debugOutput(__FUNCTION__ . ':' . intval(isSqlsInitialized()) . '/' . countSqls() . '/' . getCurrentExtensionName()); return ( @@ -136,25 +137,31 @@ function getUpdateSqlFromArray ($array, $tableName, $whereColumn, $whereData, $e continue; } // END - if - // Do we have a non-string (e.g. number, NULL, NOW() or back-tick at the beginning? + // Is there a non-string (e.g. number, NULL, SQL function or back-tick at the beginning? if (is_null($multiDimId)) { // Handle one-dimensional data if (is_null($value)) { // NULL detected $SQL .= '`' . $entry . '`=NULL,'; - } elseif (('' . bigintval($value, true, false) . '' == '' . $value . '') || ($value == 'NOW()') || (substr($value, 0, 1) == '`')) { + } elseif ((substr($value, -2, 2) == '()') || (substr($value, 0, 1) == '`')) { + // SQL function needs no ticks (') + $SQL .= '`' . $entry . '`=' . SQL_ESCAPE($value) . ','; + } elseif ('' . bigintval($value, true, false) . '' == '' . $value . '') { // No need for ticks (') $SQL .= '`' . $entry . '`=' . $value . ','; } else { // Strings need ticks (') around them - $SQL .= '`' . $entry . "`='" . SQL_ESCAPE($value) . "', "; + $SQL .= '`' . $entry . "`='" . SQL_ESCAPE($value) . "',"; } } else { // Handle multi-dimensional data if (is_null($value[$multiDimId])) { // NULL detected - $SQL .= '`' . $entry . '`=NULL, '; - } elseif (('' . bigintval($value[$multiDimId], true, false) . '' == '' . $value[$multiDimId] . '') || ($value[$multiDimId] == 'NOW()') || (substr($value[$multiDimId], 0, 1) == '`')) { + $SQL .= '`' . $entry . '`=NULL,'; + } elseif ((substr($value[$multiDimId], -2, 2) == '()') || (substr($value[$multiDimId], 0, 1) == '`')) { + // SQL function needs no ticks (') + $SQL .= '`' . $entry . '`=' . SQL_ESCAPE($value[$multiDimId]) . ','; + } elseif (('' . bigintval($value[$multiDimId], true, false) . '' == '' . $value[$multiDimId] . '')) { // No need for ticks (') $SQL .= '`' . $entry . '`=' . $value[$multiDimId] . ','; } else { @@ -183,12 +190,15 @@ function getInsertSqlFromArray ($array, $tableName) { // Walk through all entries foreach (postRequestArray() as $key => $value) { // Log debug message - /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',key=' . $key . ',value=' . $value); + //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',key=' . $key . ',value=' . $value); // Add all entries if (is_null($value)) { // Add NULL $SQL .= 'NULL,'; + } elseif (substr($value, -2, 2) == '()') { + // SQL function needs no ticks (') + $SQL .= SQL_ESCAPE($value) . ','; } elseif ('' . bigintval($value, true, false) . '' == '' . $value . '') { // Number detected, no need for ticks (') $SQL .= bigintval($value) . ','; @@ -197,7 +207,7 @@ function getInsertSqlFromArray ($array, $tableName) { $SQL .= sprintf('%01.5f', $value); } else { // Everything else might be a string, so add ticks around it - $SQL .= "'" . SQL_ESCAPE($value) . "',"; + $SQL .= chr(39) . SQL_ESCAPE($value) . chr(39) . ','; } } // END - foreach