sql >> Database >  >> RDS >> Mysql

Wat is de beste manier om tijdens runtime dynamisch een tabelnaam te kiezen?

Je kunt een identifier niet paramatereren (tabelnaam of veldnaam) in MySQL, u kunt er echter aan ontsnappen met backticks.

De volgende query wordt veilig uitgevoerd, maar produceert een fout omdat de tabel niet bestaat (tenzij door een vreemde kans dat je een tabel hebt met de naam als deze):

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

In principe kunt u dynamische namen of velden gebruiken zolang ze tussen backticks staan. Om SQL-injectie op deze manier te voorkomen, hoeft u alleen maar backticks te verwijderen:

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


  1. Mysql maakt database aan met nieuwe databaselocatie

  2. Combineer geneste lus-query's met bovenliggend array-resultaat - pg-promise

  3. Hoe geef ik elke geregistreerde gebruiker zijn eigen url met behulp van PHP?

  4. String converteren naar MySQL-tijdstempelformaat in php