X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fsql-functions.php;h=6298ed43f4efc2bd3569d26379773302e4fc7766;hb=635e14fda8ae33a58a9f8da0294204c8ef7dc758;hp=6e6e3bd28dfb5953fdb58ab75b157e791df9ed81;hpb=20741b93fd58620af677a7f1039ffd16ea6ec689;p=mailer.git diff --git a/inc/sql-functions.php b/inc/sql-functions.php index 6e6e3bd28d..6298ed43f4 100644 --- a/inc/sql-functions.php +++ b/inc/sql-functions.php @@ -124,5 +124,52 @@ function isSqlsValid () { ); } +// Generates an updating SQL query from given array +function getUpdateSqlFromArray ($array, $tableName, $whereColumn, $whereData, $excludedFields, $multiDimId = NULL) { + // Begin SQL query + $SQL = 'UPDATE `{?_MYSQL_PREFIX?}_' . $tableName . '` SET '; + + // Insert all data + foreach ($array as $entry => $value) { + // Skip login/id entry + if (in_array($entry, $excludedFields)) { + continue; + } // END - if + + // Do we have a non-string (e.g. number, NULL, NOW() 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) == '`')) { + // No need for ticks (') + $SQL .= '`' . $entry . '`=' . $value . ', '; + } else { + // Strings need ticks (') around them + $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) == '`')) { + // No need for ticks (') + $SQL .= '`' . $entry . '`=' . $value[$multiDimId] . ', '; + } else { + // Strings need ticks (') around them + $SQL .= '`' . $entry . "`='" . SQL_ESCAPE($value[$multiDimId]) . "', "; + } + } + } // END - foreach + + // Remove last 2 chars and finish query + $SQL = substr($SQL, 0, -2) . ' WHERE `' . $whereColumn . '`=' . $whereData . ' LIMIT 1'; + + // Return SQL query + return $SQL; +} + // [EOF] ?>