sql >> Database >  >> RDS >> Mysql

MySqlParameter als TableName

U kunt de tabelnaam niet als parameter doorgeven. U moet hiervoor dynamische SQL gebruiken, dus u moet concentratie gebruiken om dit te doen, bijvoorbeeld

  MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)

Maar omdat gebruikers de tableName invoeren, is SQL-injectie mogelijk. U kunt deze SQL gebruiken om te bepalen of die tabel bestaat voordat u er iets van opvraagt:

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';

(U kunt deze query perfect parametriseren, zodat SQL-injectie wordt geëlimineerd)

Wees in het algemeen voorzichtig met SQL-injectie. Maar als u dit intern gebruikt (niet bloot aan de gebruiker), dan zou SQL-injectie geen probleem moeten zijn.

Beter, je kunt een opgeslagen procedure maken om hiermee om te gaan, zoals in mijn andere antwoord:

Verenigde SQL-getter met LINQ




  1. Een web-app maken vanaf nul met Python Flask en MySQL:deel 2

  2. Verzamelmethode:LIMIT-functie in Oracle Database

  3. SQL-fout met Order By in subquery

  4. MySQL en NoSQL:help me de juiste te kiezen