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

¿Cuál es la mejor manera de elegir un nombre de tabla dinámicamente en tiempo de ejecución?

No puede parametrizar un identificador (nombre de tabla o nombre de campo) en MySQL, sin embargo, puede escaparlos usando acentos graves.

La siguiente consulta se ejecutará de forma segura, pero producirá un error porque la tabla no existe (a menos que por alguna extraña posibilidad tenga una tabla con un nombre como este):

SELECT * FROM `users; DROP TABLE users;`;

Básicamente, puede usar nombres o campos dinámicos siempre que estén encerrados entre acentos graves. Para evitar la inyección SQL de esta manera, todo lo que necesita hacer es eliminar primero cualquier acento grave:

tableName = tableName.Replace("`", "");
string commandText = "SELECT COUNT(*) FROM `" + tableName + "`";