[RESOLU] requête préparée : passage de marqueur par paramètre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] requête préparée : passage de marqueur par paramètre

Re: requête préparée : passage de marqueur par paramètre

par laurents » 13 déc. 2015, 18:38

J'ai finalement trouvé une solution pour transmettre le marqueur : les variables de session :
$_SESSION['marqueur1']=$marqueur;
$_SESSION['marqueur2']=array(':id'=>$id);
aff_infos($str,$query,$id,$serveur);

requête préparée : passage de marqueur par paramètre

par laurents » 13 déc. 2015, 15:31

Bonjour,

j'appelle plusieurs fois une fonction qui exécute une requête SQL puis utilise le résultat pour faire un affichage ; je compte donc créer une fonction PHP. La requête SQL est une requête préparée, donc l'un des paramètres est le marqueur.
Au début, je faisais :
$marqueur=array(':name'=>$name);
aff_infos($query,$marqueur)

et aff_infos.php :

function aff_infos($query,$marqueur) {
global $bdd;
$qid = $bdd->prepare($query);
$qid->execute($marqueur);
$row=$qid->FetchAll(PDO::FETCH_ASSOC);
};
mais la variable $row était vide. J'ai compris que le problème venait de passer $marqueur par paramètre car
function aff_infos($query) {
global $bdd;
$name="jupiter";
$marqueur=array(':name'=>$name);
$qid = $bdd->prepare($query);
$qid->execute($marqueur);
$row=$qid->FetchAll(PDO::FETCH_ASSOC);
fonctionne. Donc je voudrais passer par paramètre la clé et la variable pour faire un truc du genre
function aff_infos($query,$var,$key) {
global $bdd;
$marqueur=array($key=>$var);
$qid = $bdd->prepare($query);
$qid->execute($marqueur);
$row=$qid->FetchAll(PDO::FETCH_ASSOC);
sauf que la syntaxe n'est pas bonne vu que
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\wamp\www\eis2\eis\page\include\aff_infos.php on line 43
Donc que faudrait-il écrire ?