sql >> Base de Datos >  >> RDS >> Mysql

PDO:Pase una función MySQL a bindValue/bindParam

No. Un parámetro de consulta sustituye solo a un único valor constante. Por ejemplo, una constante numérica, una cadena literal o una fecha.

Todo lo demás (nombres de columnas, nombres de tablas, palabras clave SQL, funciones, expresiones) debe estar en la cadena SQL en el momento del análisis.

Re tu comentario:

Debe comprender que los parámetros no solo una conveniencia para interpolar cadenas adicionales en su SQL. PREPARE es similar a una fase de compilación para Java o C#, mientras que EXECUTE es similar a ejecutar el código compilado.

El tiempo de preparación es cuando el RDBMS verifica la sintaxis y también valida las referencias. Debe dar un error si nombra una tabla que no existe o invoca una función que no existe.

No puede pasar nombres de tablas o llamadas a funciones como parámetros porque entonces el RDBMS no podría validar esas referencias en el momento de la preparación. No debería poder usar un parámetro de consulta para cambiar la sintaxis de la declaración o introducir tablas o funciones no válidas.

Por lo tanto, el marcador de posición del parámetro debe ser un elemento sintáctico irreductible que nunca sea una referencia no válida, es decir, un valor literal único:un número o una cadena.