PBS REQUETE PREPARE PDO

mikaweb2011
WRInaute discret
WRInaute discret
 
Messages: 69
Inscription: 21 Jan 2011

PBS REQUETE PREPARE PDO

Message le Ven Sep 09, 2011 17:05

Bonjour,

Je veux appeler la même requête deux fois, Au prémier lieu sans limit et après sans lIMIT, mais j'ai un erreur qui s'afficher.

Quelqu'un peut m'aider svp ? je suis débutant dans le PDO.


REQUETE :

$vetrin = $connexion->prepare("SELECT * FROM ACCESSOIRE where id=:ID AND name=:NAME GROUP BY LIMIT :LimitStart , :LimitEnd ");
$vetrin->bindValue(':ID', 12 );
$vetrin->bindValue(':NAME', 1 );
$vetrin->bindValue(':LimitStart', 0, PDO::PARAM_INT);
//$vetrin->bindValue(':LimitEnd', 0, PDO::PARAM_INT );
$vetrin->execute();



Bon , le prémiser appel de requête consiste à afficher le nombres total des offres trouvés.
$nb_offeres = $vetrin->rowCount();


Maintenant tjs dans la même page , je veux réexecuter la même réquete pour afficher les offres par 10, voila le code:
$vetrin->bindValue(':ID', 12 );
$vetrin->bindValue(':NAME', 1 );
$vetrin->bindValue(':LimitStart', 0, PDO::PARAM_INT);
//$vetrin->bindValue(':LimitEnd', 100, PDO::PARAM_INT );
$vetrin->execute();
while(.........)

{

ect.................
}

Le problème est tjs au niveau de premier exécution qui affiche 0 résultat.Comment sélectionner tout avec limit ?


Cdt.


loran750
WRInaute passionné
WRInaute passionné
 
Messages: 2247
Inscription: 15 Mar 2005

Re: PBS REQUETE PREPARE PDO

Message le Ven Sep 09, 2011 17:13

Le meilleur moyen, avec PHP est non seulement de consulter la doc (bon, ça ... c'est sur), mais de ne jamais oublier les commentaires en bas qui donnent des tas d'astuces.

D'ailleurs, la doc de PHP, je n'y vais que pour les commentaires des gens.
Il y a 100% de chances qu'un code source te convienne dans les commentaires.

Pour PDO, soit la homepage, http://php.net/manual/fr/book.pdo.php , soit une des fonctions.

DadouDuck
WRInaute impliqué
WRInaute impliqué
 
Messages: 910
Inscription: 28 Mai 2007

Re: PBS REQUETE PREPARE PDO

Message le Ven Sep 09, 2011 18:49

C'est assez simple, les bindparam ne peuvent contenir les infos du LIMIT

mikaweb2011
WRInaute discret
WRInaute discret
 
Messages: 69
Inscription: 21 Jan 2011

Re: PBS REQUETE PREPARE PDO

Message le Sam Sep 10, 2011 10:45

DadouDuck a écrit:C'est assez simple, les bindparam ne peuvent contenir les infos du LIMIT


Bonjour,

Merci pour vos réponses.

Bon, je reformule mon pbs.

On suppose que je veux utiliser la même requête en l'appelant deux fois comme dans l'exemple ci dessous:

$reqs=$dbd->prepare("select * from article where :PRIX");


Prémier appel: Je veux afficher les offres dont le prix est <300

donc je dois écrire :

$reqs->execute(array(":PRIX"=>"prix<".300));

est ce que cette écriture est correcte ?

Deuxième appel: Afficher les offres dont le prix BETWEEN 300, 700

$reqs->execute(array(":PRIX"=>"prix BETWEEN 300 AND 700"));


Donc j'ai déclaré le requête un seul fois et j'ai fais l'appel deux fois.

Est ce que cette écriture est correcte sachant que si j'exécute se code je n'obtient aucun résultat et aucun erreur.


Cdt.

DadouDuck
WRInaute impliqué
WRInaute impliqué
 
Messages: 910
Inscription: 28 Mai 2007

Re: PBS REQUETE PREPARE PDO

Message le Sam Sep 10, 2011 16:01

mikaweb2011 a écrit:On suppose que je veux utiliser la même requête en l'appelant deux fois comme dans l'exemple ci dessous:

$reqs=$dbd->prepare("select * from article where :PRIX");


Prémier appel: Je veux afficher les offres dont le prix est <300

donc je dois écrire :

$reqs->execute(array(":PRIX"=>"prix<".300));

est ce que cette écriture est correcte ?


Non tu dois écrire

Code: Tout sélectionner
$reqs=$dbd->prepare("select * from article where  prix < :PRIX");


et

Code: Tout sélectionner
$reqs->execute(array(":PRIX"=>300));



mikaweb2011 a écrit:Deuxième appel: Afficher les offres dont le prix BETWEEN 300, 700


$reqs->execute(array(":PRIX"=>"prix BETWEEN 300 AND 700"));


Et re-non

Code: Tout sélectionner
$reqs=$dbd->prepare("select * from article where  prix BETWEEN :DEBUT AND :FIN);


et

Code: Tout sélectionner
$reqs->execute(array(":DEBUT"=>300, ":FIN" => 700));



mikaweb2011 a écrit:Donc j'ai déclaré le requête un seul fois et j'ai fais l'appel deux fois.

Est ce que cette écriture est correcte sachant que si j'exécute se code je n'obtient aucun résultat et aucun erreur.


Non tes requêtes sont totalement différentes, les requêtes préparées ne servent pas du tout a ce que tu souhaites faire, les mots clés SQL NE PEUVENT PAS ETRE MIS EN BINDPARAM


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité