Kort svar på dit spørgsmål er "nej".
I den strengeste forstand, på databaseniveau, tillader forberedte sætninger kun at binde parametre for "værdier"-bits i SQL-sætningen.
En måde at tænke dette på er "ting, der kan erstattes ved runtime-udførelse af sætningen uden at ændre dens betydning". Tabelnavnene er ikke en af disse runtime-værdier, da det bestemmer gyldigheden af selve SQL-sætningen (dvs. hvilke kolonnenavne der er gyldige), og en ændring af den på udførelsestidspunktet ville potentielt ændre, om SQL-sætningen var gyldig.
På et lidt højere niveau, selv i databasegrænseflader, der emulerer forberedt sætningsparametersubstitution i stedet for rent faktisk at sende forberedte sætninger til databasen, såsom PDO, hvilket kunne tænkes at give dig mulighed for at bruge en pladsholder hvor som helst (da pladsholderen bliver erstattet, før den sendes til databasen i disse systemer), ville værdien af tabelpladsholderen være en streng og indesluttet som sådan i den SQL, der sendes til databasen, så SELECT * FROM ?
med mytable
da parameteren faktisk ville ende med at sende SELECT * FROM 'mytable'
til databasen, som er ugyldig SQL.
Dit bedste bud er bare at fortsætte med
SELECT * FROM {$mytable}
men du absolut skal have en hvidliste over tabeller, som du først tjekker mod, hvis den $mytable
kommer fra brugerinput.