it-swarm-es.tech

Consulta de base de datos donde el valor () es un número

Como sabemos, cualquier valor que se defina en una consulta de base de datos siempre debe escaparse en Joomla usando $db->quote($value).

Al definir números como una variable, normalmente se usaría (int) Para establecerlo como un entero.

Entonces, ¿qué haría uno al establecer un número como un valor en una cláusula where() para una consulta de base de datos? ¿Lo definiríamos solo como un entero así:

$id = (int)555;
->where($db->quoteName('id') . ' = ' . $id);

o solo tendríamos que citarlo así:

$id = 555;
->where($db->quoteName('id') . ' = ' . $db->quote($id));

o haríamos los dos?

$id = (int)555;
->where($db->quoteName('id') . ' = ' . $db->quote($id));

¿Podría alguien arrojar algo de luz para que yo sepa para futuras referencias, por favor?

6
Lodder

Buena pregunta esta. He estado en esta consideración muchas veces también. No estoy seguro de si hay una respuesta correcta y tampoco estoy seguro de si mi respuesta será totalmente correcta y se explicará claramente.

Por lo que he visto hasta ahora, la base de datos comprenderá una consulta que contiene un número/número entero en una instrucción where, y la comparará con su conjunto de registros, incluso si el campo que estamos comparando está definido como (INT), (TEXT ), (VARCHAR) o (CHAR), con o sin comillas.

Sin embargo, uno de los puntos críticos en tales casos es tener consistencia al consultar la base de datos con los tipos de datos correctos. Entonces, al verificar un campo INT, la variable incluida en la consulta siempre debe transformarse en un entero.

Al hacerlo y pasar un número entero a la base de datos, estamos algo seguros de qué datos estamos enviando ... La base de datos comprenderá y procesará la consulta.

De mis pruebas con este caso, mi conclusión general es que citar el número entero no hará ninguna diferencia en los resultados y la estabilidad total. (A menos que haya casos específicos en los que no pueda pensar en este momento, donde citar o no un entero dará como resultado resultados diferentes o no deseados). Entonces, parece que se reduce más al estilo de codificación y la consistencia del código.

Con lo anterior en mente, parece que en realidad no es necesario citar un número entero.

Será interesante investigar esto en todo el núcleo de Joomla, ver ampliamente sus prácticas, o incluso mejor contar con la opinión de alguien con un amplio conocimiento y experiencia sobre este tema.

3
FFrewin