Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/02/2010, à 14:57

Ph3nix_

[resolu] Problème requète SQL en PHP avec PDO

Plop, tout est dans le titre:

Voici mon code:

	
public static function get9Img($page) {
		$requete="select * from images order by dateCreation desc limit :debut,:fin";
		$bd = Outils_bd::getInstance()->getConnexion();
		$stm = $bd -> prepare($requete);
		$data=array('debut' => 9*($page-1),'fin' => 9*$page);
		$stm->execute($data);
		$result=$stm->fetchAll(PDO::FETCH_ASSOC);
		return $result;
	}

Voila ce que je;souhaite obtenir:
Lorsque j'appelle cette fonction, en passant une page en paramètre, je souhaite que cette fonction fasse une requète sql sur la bdd.

Cette requète trira les images par date et me retournera les n'upplets en (page-1)*9,(page-1)*9+1.....,page*9
(si la page est 1 toutes les n'upplets en 0,1,2,3..9 ème position.

Le tri fonctionne bien, ce qui ne fonctionne pas c'est ceci "limit :debut,:fin"
Quand je le remplace par "limit 0,9" cela fonctionne mais quand je tente de passer des variables la requête SQL préparé ne retourne aucun résultat.

Dernière modification par Ph3nix_ (Le 06/02/2010, à 22:05)


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#2 Le 06/02/2010, à 15:58

Khyl

Re : [resolu] Problème requète SQL en PHP avec PDO

Salut,
tu attaques quoi comme base de données ? MySql ?
je vois que tes paramètres sont :debut et :fin ; c'est comme ça qu'on les déclare sous Oracle mais par contre c'est différent selon la base de données.

Si tu utilises MySql, ce lien t'aidera sûrement : http://www.siteduzero.com/tutoriel-3-36596-requete-preparee.html smile

Hors ligne

#3 Le 06/02/2010, à 22:05

Ph3nix_

Re : [resolu] Problème requète SQL en PHP avec PDO

En effet c'est une sgbd en MySQL.
Mais j'utilise PDO pour interfacé la base de donnée.
(:debut et :fin sont des marqeurs en faite)

Bref... PDO implémente mal la clause LIMIT, et on ne peut pas préparer les requètes en utilisant des marqueurs avec cette clause.

J'ai résolu le problème en utilisant des variables.
Pour ceux que ça intéresserait ça donne:

$rq_id = $connexion -> prepare("SELECT * FROM imagesL3 ORDER BY dateCreation DESC LIMIT ".$offset.",".$length);

Je précise que du coup ça n'a vraiment aucun interet d'utiliser une requète préparée.

RESOLU tongue

Dernière modification par Ph3nix_ (Le 06/02/2010, à 22:07)


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne