Helpers – Mysql – Comprobación datos MySQL
Cuando guardamos datos en una base de datos en MySQL hay que tener en cuenta que el valor este en un en mismo rango que el tipo de datos de la base de datos.
También tenemos que asegurar que la longitud de los textos a guardar no superen el máximo que pueda tener el campo de texto de la base de datos.
Se comprueva además que si el campo es una clave primaria o foránea, esta no sea cero y si el campo es obligatorio que tenga un valor.
/** * HelperMysql.php * @author Code Develium */ namespace Helpers; /** * Class HelperMysql */ abstract class HelpMysql { /** * Indica si es un número de mysql tiny int unsigned (0,255) * * @param $num * @param bool $obligatorio * @param bool $esId * @param null $errorMsg * * @return bool */ public static function isTinyIntUnsigned( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= 0 && $num <= 255); if (!$rangoOk) { $errorMsg = 'Tiny int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql tiny int (-128,127) * * @param int $num * @param bool $obligatorio * @param $esId * @param $errorMsg * * @return bool */ public static function isTinyInt( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= -128 && $num <= 127); if (!$rangoOk) { $errorMsg = 'Tiny int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql small int unsigned (0,65535) * * @param $num * @param bool $obligatorio * @param $esId * @param $errorMsg * * @return bool */ public static function isSmallIntUnsigned( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= 0 && $num <= 65535); if (!$rangoOk) { $errorMsg = 'Small int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql small int (-32768,32767) * * @param $num * @param bool $obligatorio * @param $esId * @param $errorMsg * * @return bool */ public static function isSmallInt( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= -32768 && $num <= 32767); if (!$rangoOk) { $errorMsg = 'Small int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql medium int * unsigned (0,16777215) * * @param $num * @param bool $obligatorio * @param $esId * @param $errorMsg * * @return bool */ public static function isMediumIntUnsigned( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= 0 && $num <= 16777215); if (!$rangoOk) { $errorMsg = 'Medium int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql medium int (-8388608,8388607) * * @param $num * @param bool $obligatorio * @param $esId * @param $errorMsg * * @return bool */ public static function isMediumInt( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= -8388608 && $num <= 8388607); if (!$rangoOk) { $errorMsg = 'Medium int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql int unsigned (0,4294967295) * * @param $num * @param bool $obligatorio * @param bool $esId * @param null $errorMsg * * @return bool */ public static function isIntUnsigned( $num, $obligatorio, $esId, &$errorMsg ) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= 0 && $num <= 4294967295); if (!$rangoOk) { $errorMsg = 'Int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql int (-2147483648 0,2147483647) * * @param $num * @param bool $obligatorio * @param bool $esId * @param null $errorMsg * * @return bool */ public static function isInt( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= -2147483648 && $num <= 2147483647); if (!$rangoOk) { $errorMsg = 'Int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql big int unsigned (0,18446744073709551615) * * @param $num * @param bool $obligatorio * @param bool $esId * @param $errorMsg * * @return bool */ public static function isBigIntUnsigned( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= 0 && $num <= 18446744073709551615); if (!$rangoOk) { $errorMsg = 'Big Int fuera de rango'; } return $rangoOk; } /** * Indica si es un número de mysql big int unsigned * (-9223372036854775808,9223372036854775807) * * @param $num * @param bool $obligatorio * @param $esId * @param $errorMsg * * @return bool */ public static function isBigInt( $num, $obligatorio, $esId, &$errorMsg) { $empty = HelpValidate::isEmpty($num); if ($esId && ($empty || $num === 0 || $num == '0')) { /* Si es ID, no puede estar vacÃo */ $errorMsg = 'El ID no puede ser 0'; return false; } if ($empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } if ($empty && !$obligatorio) { // Puede ser nulo return true; } $rangoOk = ($num >= -9223372036854775808 && $num <= 9223372036854775807); if (!$rangoOk) { $errorMsg = 'Big Int fuera de rango'; } return $rangoOk; } /** * Indica si un string es válido para ser guardado en una campo * string de una base de datos Mysql. * La longitud del campo no puede superar un número máximo de * carcateres. * Si el campo es obligatorio, ha de existir un valor no vacÃo. * * @param string $valor * @param int $len * @param bool $obligatorio * @param null $errorMsg * * @return bool */ public static function isString( $valor, $len, $obligatorio, &$errorMsg) { $empty = HelpValidate::isEmpty($valor); if ( $empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } // Valor no obligatorio if ( $empty && !$obligatorio) { return true; } $valido = (strlen(''.$valor) <= $len); if (!$valido) { $errorMsg = "Máximo {$len} caracteres"; } return $valido; } /** * Indica si un double es válido para ser guardado en una campo * double de una base de datos Mysql. * Si el campo es obligatorio, ha de existir un valor no vacÃo, * pero SI puede ser cero. * * @param double|int $valor * @param bool $obligatorio * @param $errorMsg * * @return bool */ public static function isDouble( $valor, $obligatorio, &$errorMsg) { if (!filter_var($valor, FILTER_VALIDATE_FLOAT)) { $errorMsg = 'Valor double incorrecto'; return false; } $empty = HelpValidate::isEmpty($valor); if ( $empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } // Valor no obligatorio if ( $empty && !$obligatorio) { return true; } return true; } /** * Indica si un string en formato fecha y hora es válido para ser * guardado en una campo datetime * de una base de datos Mysql. * Si el campo es obligatorio, ha de existir un valor no vacÃo. * Formato de fecha: yyyy-mm-dd hh:mm:ss * * @param string $valor * @param bool $obligatorio * @param null $errorMsg * * @return bool */ public static function isDateTime( $valor, $obligatorio, &$errorMsg) { $empty = HelpValidate::isEmpty($valor); if ( $empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } // Valor no obligatorio if ( $empty && !$obligatorio) { return true; } $dateOk = HelpValidate::isDateTime($valor); if( !$dateOk){ $errorMsg = 'Formato de fecha y hora incorrecto: '.$valor; } return $dateOk; } /** * Indica si un string en formato fecha es válido para ser * guardado en una campo date de una base de datos Mysql. * Si el campo es obligatorio, ha de existir un valor no vacÃo. * Formato de fecha: yyyy-mm-dd * * @param string $valor * @param bool $obligatorio * @param $errorMsg * * @return bool */ public static function isDate($valor, $obligatorio, &$errorMsg) { $empty = HelpValidate::isEmpty($valor); if ( $empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } // Valor no obligatorio if ( $empty && !$obligatorio) { return true; } $dateOk = HelpValidate::isDate($valor); if( !$dateOk){ $errorMsg = 'Formato de fecha incorrecto: '.$valor; } return $dateOk; } /** * Devuelve true si es un valor bool. Puede ser obligatorio. * * @param $valor * @param $obligatorio * @param null $errorMsg * * @return bool */ public static function isBool( $valor, $obligatorio, &$errorMsg = null): bool { $empty = HelpValidate::isEmpty($valor); if ( $empty && $obligatorio) { $errorMsg = 'Campo obligatorio'; return false; } // Valor no obligatorio if ( $empty && !$obligatorio) { return true; } if (!is_bool($valor)) { $errorMsg = 'Valor bool fuera de rango: '.$valor; return false; } return true; } }