sql >> Databasteknik >  >> RDS >> Mysql

Vad är det bästa sättet att välja ett tabellnamn dynamiskt under körning?

Du kan inte paramatisera en identifierare (tabellnamn eller fältnamn) i MySQL, men du kan undvika dem med backticks.

Följande fråga kommer att köras säkert men ger ett fel eftersom tabellen inte existerar (såvida du inte av en konstig slump faktiskt har en tabell som heter så här):

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

I grund och botten kan du använda dynamiska namn eller fält så länge de är inneslutna i backticks. För att förhindra SQL-injektion på detta sätt är allt du behöver göra att först ta bort eventuella backticks:

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


  1. Fråga om aktuellt datum i tid mysql

  2. Uppdatera fråga med hjälp av Subquery i SQL Server

  3. Vilket är det bästa sättet att dubbelriktat synkronisera dynamisk data i realtid med mysql

  4. Mysql välj var inte i tabellen