8722 sujets

Développement web côté serveur, CMS

Bonjour, j'ai un petit problème avec PHP et SQL pour exécuter une requête préparée.
Voici la requête que je souhaite exécuter :
$produits = $DB->query('SELECT * FROM produits WHERE date_livraison = ?', array($datelivraison));


Voici l'erreur que j'obtiens : Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?'

Et voici ma fonction query qui se trouve dans un fichier db.class.php :
	
public function query($sql, $data = null) {
	$requete = $this->db->query($sql);
	if($data !== null) {
		$requete = $this->db->prepare($sql);
		$requete->execute($data);
        }
        return $requete->fetchAll(PDO::FETCH_OBJ);
}


Depuis que j'ai créé cette fonction, je n'arrive plus à exécuter mes requêtes préparées, le problème doit venir de là, mais je ne trouve pas...

Merci d'avance.
Alors voilà, en postant le message sur ce forum j'ai trouvé la solution à mon problème (après avoir pourtant cherché et essayé pendant longtemps) !!
Ma requête devait plutôt être construite comme ceci :

	public function query($sql, $data = null) {
		if($data !== null) {
			$requete = $this->db->prepare($sql);
			$requete->execute($data);
		}
		else {
			$requete = $this->db->query($sql);
		}
		return $requete->fetchAll(PDO::FETCH_OBJ);
	}


Désolé du dérangement...