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

PreparedStatement:posso fornire il nome della colonna come parametro?

Questo non funzionerà. L'istruzione prepare analizza l'SQL, lo invia al database per la convalida e la compilazione. Se i punti interrogativi potessero sostituire parti dell'SQL, perderesti l'intero punto delle variabili associate:velocità e sicurezza. Dovresti reintrodurre SQL injection e le istruzioni dovranno essere ricompilate per tutti i parametri.

Non sarebbe qualcosa come SELECT * FROM table WHERE c1 = ? OR c2 = ? OR c3 = ? essere migliore (ovviamente a seconda degli indici e delle dimensioni delle tabelle).