PHP PDO préparé des déclarations donnant erreur «syntaxe invalide»

J'utilise des instructions préparées dans PDO pour sélectionner des données de mon server SQL et j'obtiens une erreur de syntaxe:

QLSTATE[HY000]: General error: 10007 Incorrect syntax near 'memb_user'. [10007] (severity 5) [(null)] in 

memb_user est le nom de la table. Voici l'instruction préparée et le tableau que j'utilise:

 $query = "SELECT ?, ? FROM ? WHERE ? = ? AND ? = ?"; $data = array($this->columns['username'], $this->columns['password'], $this->table, $this->columns['username'], $this->user , $this->columns['password'], $this->pass); 

Et voici comment j'exécute la déclaration:

 $statement = $this->connection->prepare($query); $statement->execute($data); 

J'ai essayé de placer la requête dans le server sql et de replace l'espace réservé par des valeurs correctes et cela semble aller, seules les citations qui devaient se find dans les conditions WHERE étaient les plus pertinentes. Est-ce que je l'exécute incorrectement?

Comme dit @sean, "Vous ne pouvez pas utiliser des espaces réservés pour les noms de colonne ou de table." Vous pouvez cependant les injecter dans la requête via sprintf() REMARQUE: Assurez vous que toutes datatables POST / GET sont correctement échappées.

Essayez ceci: (non testé)

 $query = sprintf('SELECT `%1$s`, `%2$s` FROM `%3$s` WHERE ? = ? AND ? = ?', $this->columns['username'], $this->columns['password'], $this->table); $data = array($this->columns['username'], $this->user , $this->columns['password'], $this->pass);