sql >> Databáze >  >> RDS >> Mysql

Jaký je nejlepší způsob dynamického výběru názvu tabulky za běhu?

Nemůžete parametrizovat identifikátor (název tabulky nebo pole) v MySQL, můžete je však opustit pomocí zpětných zatržení.

Následující dotaz poběží bezpečně, ale způsobí chybu, protože tabulka neexistuje (pokud nějakou zvláštní náhodou nemáte tabulku pojmenovanou takto):

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

V zásadě můžete používat dynamická jména nebo pole, pokud jsou uzavřena v zadních značkách. Abyste zabránili vkládání SQL tímto způsobem, vše, co musíte udělat, je nejprve odstranit všechna zpětná zaškrtnutí:

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


  1. AFTER LOGON(Oracle) trigger v PostgreSQL s příponou – login_hook

  2. CodeIgniter - jak odeslat hodnotu z formuláře jako NULL místo 0

  3. dotaz mysqli vrací pouze první řádek

  4. MySQL:Nevkládejte nový řádek, pokud jsou definované řádky stejné