Passage de paramètre entre procédure stockée et script Php - PHP - Programmation
Marsh Posté le 09-04-2014 à 17:15:59
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.
Marsh Posté le 10-04-2014 à 16:53:27
Slt,
ce que j'utilise
code php:
Code :
|
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 :
|
si tu as besoin d'autre explication n'hesite pas
Marsh Posté le 09-04-2014 à 15:24:19
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