Secondo la DOP PHP Documentazione :: preparare() aggiunge le citazioni a tutti i parametri in modo che non devi preoccuparti di farlo:Trattare con citazioni aggiunti da PDO :: preparare()
"I parametri per le istruzioni preparate non hanno bisogno di essere citati, il driver gestisce automaticamente questo, se un'applicazione utilizza esclusivamente istruzioni preparate, lo sviluppatore può essere sicuro che non si verificherà alcuna iniezione SQL (tuttavia, se altre parti della query sono in corso costruito con input senza caratteri di escape, l'iniezione SQL è ancora possibile). "
Il problema con questo per me è il modo in cui sto creando le mie query e la mia struttura di database. Di solito la parte FROM di un'istruzione SQL non dovrebbe essere parametrizzata perché probabilmente la tabella verrebbe definita dall'input dell'utente diretto. Comunque con il mio codice questo è il caso in alcuni punti e quindi mi sento più a mio agio con la versione parametrizzata.
SELECT * FROM ? WHERE ?=?
al contrario di SELECT * FROM tablename WHERE? =?
Quindi la mia domanda è questa, è possibile impedire al mio oggetto PDO di aggiungere le virgolette attorno al parametro FROM in modo che non vengano visualizzati errori SQL in mio volto? O devo farlo in un modo diverso.
Qual è la domanda esattamente? – jeroen
Non aggiunge necessariamente virgolette. I driver che supportano le istruzioni preparate in modo nativo manterranno il '?' Letterale e il server del database esegue la sostituzione. - Tuttavia è necessario spiegare cosa sta facendo in modo specifico il codice e perché questo è un problema qui. L'aggiunta di ''?'' O '': placeholder'' nelle tue clausole FROM sono stringhe letterali, non parametri associati. – mario
Mi dispiace, ho accidentalmente premuto invio prima che avessi finito di digitare la domanda – hamalnamal