sql >> Database teknologi >  >> RDS >> Mysql

Hvad er den bedste måde at vælge et tabelnavn dynamisk på under kørsel?

Du kan ikke paramaterisere en identifikator (tabelnavn eller feltnavn) i MySQL, men du kan undslippe dem ved at bruge backticks.

Følgende forespørgsel vil køre sikkert, men producerer en fejl, fordi tabellen ikke eksisterer (medmindre du ved en underlig chance faktisk har en tabel med navn som dette):

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

Som udgangspunkt kan du bruge dynamiske navne eller felter, så længe de er omgivet af backticks. For at forhindre SQL-injektion på denne måde, er det eneste, du skal gøre, at fjerne eventuelle backticks først:

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


  1. MySQL INNER JOIN Alias

  2. Skinner viser seneste værdi efter gruppering

  3. Ændre grænse for Mysql rækkestørrelse for stor

  4. Sådan tilføjes sekvensnummer for hvert element i en gruppe ved hjælp af en SQL-forespørgsel uden midlertidige tabeller