Procédure stockées et variables de sorties

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 : Procédure stockées et variables de sorties

par deterred » 25 oct. 2007, 22:16

Je crois que Tracker à tres bien illustré la manip.

Pour corriger mon premier exemple, il aurait fallu écrire :
$this->_sql = "call test7(@mavar)";
mysql_query( $this->_sql, $this->_resource );

$this->_sql = "select @mavar";
$cur = mysql_query( $this->_sql, $this->_resource );

$row = mysql_fetch_row( $cur );

echo $row[0]; //affiche le resultat de la requete

mysql_free_result( $cur );
Les deux commandes mysql_query() pouvant être remplacées par une seule de mysqli_multi_query()


A+

par Tracker » 25 oct. 2007, 21:40

Je peux compléter par un exemple si tu veux, le principe étant d'échanger les valeurs en utilisant des "variables mysql":

exemple de procédure

Code : Tout sélectionner

delimiter | create procedure sp_test (inout var1 int) begin set var1 = var1 + 1; end |
exemple de script
<?php
$cnx = mysql_connect('localhost','root','');
mysql_select_db('test', $cnx);

// 1- Initialisation de la variable @x
mysql_query('set @x=1', $cnx);

// 2- Invocation de la procédure
mysql_query('call sp_test(@x)', $cnx);

// 3- Récupèration du résultat
$res = mysql_query('select @x', $cnx);

if($row = mysql_fetch_row($res))
{
	mysql_free_result($res);
	echo 'sp_test result:'.$row[0];
}
?>

Tracker.

par Truc » 25 oct. 2007, 20:17

Pour qu'on ait une version correcte sur le forum n'hésite pas à nous en dire plus :wink:

par Tracker » 25 oct. 2007, 20:09

Salut Tracker !
Je te remercie :) ça marche nickel !
dieu te le rendra au centuple ... !
A+
De rien m'sieur, mais pour le centuple je crois que je peux toujours attendre :wink:

[ps] il me semble que tu es inscrit, alors appuie sur [résolu]..

++

par deterred » 25 oct. 2007, 20:02

Salut Tracker !

Je te remercie :) ça marche nickel !

dieu te le rendra au centuple ... !

A+

par Tracker » 25 oct. 2007, 19:42

Salut,

Regarde, dans la doc mysql, le code à la fin de cette page


Tracker.

Procédure stockées et variables de sorties

par deterred » 25 oct. 2007, 19:30

Bonjour,

Je m'interresse depuis peu aux proc stockées de mysql, et leur utilisation avec php.

Je n'ai pas trouvé énormément de doc, et le peu ne répondent pas à mes questions, qui je le pensent sont trop simples pour justifier un tutorial complet :x .. ceci dit, pourriez vous m'aider en me donnant les bases, ou une url ou sont expliquées les bases de la manipulations des procedures stockées par php.

Voici ce que j'essaie de faire :
Ma procedure stockée :

Code : Tout sélectionner

CREATE DEFINER=`XXX`@`localhost` PROCEDURE `test7`(OUT V_count int) BEGIN SELECT COUNT(*) INTO V_count FROM epc_client; END
Quand j'execure la requete par :

Code : Tout sélectionner

$this->_sql = "call test7()"; mysql_query( $this->_sql, $this->_resource );

(ou _sql est ma requete : et _ressource ma connexion),

j'obtiens un message d'erreur :

Incorrect number of arguments for PROCEDURE epc.test7; expected 1, got 0 SQL=CALL test7()

Ce qui me parait à peu pres normal, mais je ne sais pas comment spécifier mon parametre de sortie ...

Si une ame charitable peut m'aider :)

Merci bcp