Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1934 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Passage de paramètre entre procédure stockée et script Php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage de paramètre entre procédure stockée et script Php

n°2224628
jean202
Posté le 09-04-2014 à 15:24:19  profilanswer
 

Bonjour
j'ai une procédure stockée sous mysql qui fonctionne bien
delimiter //
CREATE PROCEDURE ChainReaction
(
IN inputNo int ,
OUT cPath varchar(50)
)
BEGIN
declare final_id int default 1000000;
SET cPath=inputNo;
Set final_id=inputNo;
while (final_id !=0) do
Set inputNo=final_id;
SELECT parent_id into final_id from categories where categories_id=inputNo;
if (final_id !=0) then
SET cPath= concat(final_id , "_" , cPath) ;
end if;
end while;
END//
delimiter ;
 
sous mysql
je saisie
SET @P1=30110;
CALL Chainreaction(@P1,@P2);
SELECT @P1,@P2; ou SELECT @P2
et j'obtiens le résultat 30000_30100_30110
 
 
Comment appeler cette procédure stockée en Php procédural?  
J'ai essayé cela
$azerty="1233";
$categories_query = tep_db_query("CALL Chainreaction(30110,".$azerty." )" );
echo $azerty;
$categories = tep_db_fetch_array($categories_query);
print_r($categories);
 
mais je récupére un message d'erreur mysql 1414 - OUT or INOUT argument 2 for routine ... ce qui confirme que le passage de ma 2eme variable est mauvais.
 
Est-ce que le recours à une requete préparée est obligatoire? Et comment récupérer ma chaine de caractère?
Merci

mood
Publicité
Posté le 09-04-2014 à 15:24:19  profilanswer
 

n°2224647
rufo
Pas me confondre avec Lycos!
Posté le 09-04-2014 à 17:15:59  profilanswer
 

Avoir ".$azerty." pour le paramètre qui est un OUT, ça me paraît bizarre :/
 
Je me serais plus attendu à un truc du genre &$VarToto.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2224743
deejay59
Posté le 10-04-2014 à 16:53:27  profilanswer
 

Slt,
ce que j'utilise
code php:

Code :
  1. $connect = db_connect(); // les infos de connexion sous mysql
  2. $azerty="1233";
  3. $query = sprintf("CALL ChainReaction ('%s', @cPath);", mysql_real_escape_string($azerty, $connect));


sprintf pour eviter l injection sql, donc $azerty va remplacer le %s, et le @cPath signifie dans quel variable je recupere le paremetre de retour de la procedure sotckee.
ensuite:

Code :
  1. $result = mysql_query($query,$connect); //on execute l'appel de la procedure stockée.
  2. $result = mysql_query('SELECT  @cPath as cPath', $connect); // on recupere la valeur retournée.
  3. $rec = mysql_fetch_array($result);
  4. echo $rec['cPath']; // on affiche le resultat.


si tu as besoin d'autre explication n'hesite pas


Message édité par deejay59 le 10-04-2014 à 16:58:43
n°2224796
jean202
Posté le 11-04-2014 à 09:41:17  profilanswer
 

Merci Deejay59
Je ne voyais pas cela comme ça. Nickel!

n°2224853
deejay59
Posté le 11-04-2014 à 14:01:42  profilanswer
 

de rien  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Passage de paramètre entre procédure stockée et script Php

 

Sujets relatifs
PHP + SQL + Jpgraph = j'y arrive pasSCRIPT, detecter lettre hdd externe en batch
passage d'une variable dans une autre FormScript shell pour comparaison de 2 fichier et récupération du résultat
Requête SQL basée sur paramètre et table un peu étrangeAide formulaire d'inscription PHP page blanche
LISTE DEROULANTE PHP MYSQLscript correspondance ancien produit avec nouveau produit
PHP et UTF-8 
Plus de sujets relatifs à : Passage de paramètre entre procédure stockée et script Php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR