Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/03/2011, 10h55   #1
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut SELECT MAX prepare

Bonjour,

J'ai un souci avec une requête PDO :
si je lance cette requête :
Code :
1
2
 
SELECT MAX(item_order) AS max FROM content WHERE parent_id = '57' ORDER BY item_order
cela fonctionne très bien, me retourne 1.
Mais je voudrais faire ceci :
Code :
1
2
3
4
5
6
7
8
9
10
 
$param=array('pid'=>57);
$max = "SELECT MAX(item_order) AS max FROM ".$this->__get('db_prefix')."_content WHERE parent_id = ':pid' ORDER BY item_order";
$result = $this->GetDb()->select($max,$Param);
if($result)
{
	$data['success'] = true;
	$data['max'] = print_r($result,true);
	return json_encode($data);
}
mais cela me retourne 3 quelquesoit la valeur de 'pid'.

Voilà la fonction 'select' :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
public function select($query,$input)
	{
		try
		{	 
			$requete = $this->PDOInstance->prepare($query);
			$requete->execute($input);
			$result = $requete->fetch(PDO::FETCH_OBJ);
			$requete->closeCursor();
 
			return $result;
		}
		catch (Exception $e) 
		{
			//On indique par email que la requête n'a pas fonctionné.
			error_log(date('D/m/y').' à '.date("H:i:s").' : '.$e->getMessage(), 1, 'nico@nico-xiaoxia.com');
		}
		return false;
	}
Quelqu'un a une idée ?
Merci.
  Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 11h05   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Tu as oublié les :
Code :
$param=array(':pid'=>57);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 23/03/2011, 11h08   #3
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Merci mais cela ne fonctionne toujours pas.
  Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 11h12   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il ne faut pas mettre de guillemets de toute façon parce que c'est un entier et d'autre part parce que c'est un paramètre nommé :
Tu as aussi $param / $Param qui se balladent.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 11h17   #5
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
si je fais :
Code :
1
2
 
SELECT MAX(item_order) AS max FROM ".$this->__get('db_prefix')."_content WHERE parent_id = :pid ORDER BY item_order
Cela ne me retourne même plus d'affichage.
Mais si je fais :
Code :
1
2
3
4
5
6
7
8
9
 
$max = "SELECT MAX(item_order) AS max FROM ".$this->__get('db_prefix')."_content WHERE parent_id = '".$add['parent_id']."' ORDER BY item_order";
$result = $this->GetDb()-> select($max,$Param);
if($result)
{
	$data['success'] = true;
	$data['max'] = print_r($result,true);
	return json_encode($data);
}
cela fonctionne très bien mais ce n'est plus une requête préparée.
  Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 11h27   #6
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
OH que j'ai honte....
En effet, si mon tableau s'appel $param et que j'utilise $Param...cela ne risque pas de fonctionner.
Encore une erreur très stupide, je vais donc délester.

Encore merci pour ta réactivité sabotage.
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h33.


 
 
 
 
Partenaires

Hébergement Web