variable una tabla renombrar nombre modificar como columna cambiarle cambiar cambia cabecera php mysql sqlite postgresql

php - una - nombre columna sql



Compruebe el nombre de columna de SQL vĂ¡lido (4)

¿Cómo comprobaría en php que una cadena es un nombre de columna compatible válido para una declaración SQL? sólo una coincidencia de cadena.


En última instancia, cada cadena es un nombre de columna válido una vez que está entre comillas dobles (MySQL podría no obedecer esa regla según la configuración. No usa comillas dobles como comillas de identificación en la instalación predeterminada).

Sin embargo, si desea ser multiplataforma (como sugieren las diferentes etiquetas DBMS), debe verificar el mínimo común denominador.

El manual de PostgreSQL tiene una buena definición de esto:

Los identificadores de SQL y las palabras clave deben comenzar con una letra (az, pero también las letras con signos diacríticos y letras no latinas) o un guión bajo (_). Los caracteres subsiguientes en un identificador o palabra clave pueden ser letras, guiones bajos, dígitos (0-9) o signos de dólar ($). Tenga en cuenta que los signos de dólar no están permitidos en los identificadores de acuerdo con la letra del estándar SQL, por lo que su uso podría hacer que las aplicaciones sean menos portátiles.

Así que debes verificar lo siguiente con una expresión regular:

  • comienza con una letra
  • solo contiene caracteres (letras) y dígitos y un guión bajo

Así que una expresión regular como la siguiente debería cubrir esto:

^[a-zA-Z_][a-zA-Z0-9_]*$

Como SQL no distingue entre mayúsculas y minúsculas (a menos que se usen comillas dobles), se permiten mayúsculas y minúsculas.


Puede usar la consulta de MySQL de la siguiente manera para obtener los campos de una tabla en particular:

SHOW FIELDS FROM tbl_name

y luego algunos PHP simple:

$string_to_check = ''sample''; $valid = false; $q = mysql_query("SHOW FIELDS FROM tbl_name"); while($row = mysql_fetch_object($q)) { if($row->Field == $string_to_check) { $valid = true; break; } } if($valid) { echo "Field exists"; }


Si tuviera la misma pregunta, buscaría la documentación de la base de datos en particular para la lista de ciertos caracteres y luego la implementaría en forma de expresión regular.

Pero nunca me enfrentaría a una pregunta así, porque los caracteres latinos básicos, los números y el subrayado son más que suficientes para nombrar cualquier campo que use. Así que mantendría una gran portabilidad y mantenibilidad.


Utilizar

Utilice columnas de visualización o describa la consulta. Y que validar a partir del resultado.