Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la meilleure façon de choisir dynamiquement un nom de table lors de l'exécution ?

Vous ne pouvez pas paramétrer un identifiant (nom de table ou nom de champ) dans MySQL, cependant, vous pouvez les échapper en utilisant des backticks.

La requête suivante s'exécutera en toute sécurité mais produira une erreur car la table n'existe pas (à moins que, par hasard, vous n'ayez une table nommée comme ceci) :

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

Fondamentalement, vous pouvez utiliser des noms ou des champs dynamiques tant qu'ils sont entourés de backticks. Afin d'empêcher l'injection SQL de cette façon, tout ce que vous avez à faire est de supprimer d'abord tous les backticks :

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