[PHP] Executer une procédure stocké

Statut
N'est pas ouverte pour d'autres réponses.

[Clad]

Manipulateur de bits
Bonjour, encore en galère en php (comme d'hab enfaite :[] )

Je vien de créer une procédure stocké

CREATE PROCEDURE valeur1(IN idValeur1 INT)
BEGIN
SELECT valeur1 FROM listeValeur WHERE idValeur1=idListeValeur;
END

La procédure fonctionne dans la fenêtre de commande mysql.

Par exemple je fait call valeur1(13);

Ca me retourne 'bobineuse 3'.

Maintenant je me demande comment faire pour utiliser/appeler la procédure stockée dans php :s

J'ai cherché sur google, j'ai trouvé 2-3 truc (notamment sur le manuel php) mais je n'y comprend rien du tout :dead:

Need help pls :love:

PS: c'est procédure stockée mais j'arrive plus à changer le titre
 

eGm_

Gibon Blasé
$query = 'SELECT valeur1(13);';
$result = mysql_query($query);
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("Standards"); // Sélection de la base coursphp

$query = 'SELECT valeur1(12);';
$result = mysql_query($query);

echo 'le resultat est '.$result.'<br/>';
echo $query;

mysql_close(); // Déconnexion de MySQL
?>

j'obtient rien :x
Enfin y a rien qui s'affiche pour la variable :beuh:
 

eGm_

Gibon Blasé
$data=mysql_fetch_array($result);

echo $data;
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
J'y avais pensé en plus, j'avais testé mais comme j'ai eu une erreur jpensais j'avais fait nimp.

Donc j'en arrive à ca:
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("Standards"); // Sélection de la base coursphp

$query = 'SELECT procedure valeur1(13);';
$result = mysql_query($query);

$data=mysql_fetch_array($result);

echo $data;

mysql_close(); // Déconnexion de MySQL
?>
Et je recoi en retour:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Projet\procedure_stock.php on line 8
C'est bizarre, tu as une idée d'où provient cette erreur??

Merci de ton aide dans tout les cas ;)
 

eGm_

Gibon Blasé
enlève le procedure dans ta query.
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
c'est pariel :-(

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("Standards"); // Sélection de la base coursphp

$query = 'SELECT valeur1(13);';
$result = mysql_query($query);

$data=mysql_fetch_array($result);

echo $data;

mysql_close(); // Déconnexion de MySQL
?>

Peut être il me manque un fichier apache ou php j'en sais rien pour éxécuter les procédures stockées??
 

eGm_

Gibon Blasé
tu es sur de ta connection a ta DB ?

<?php

mysql_connect("localhost", "root", "") or die("echec cnx mysql");
mysql_select_db("Standards") or die("echec select DB");
?>
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
Ouai je suis sûr, toutes mes requêtes normales fonctionnent.

J'ai rajouté ton truc de test de connexion, ca ne me fait pas d'erreur à ce niveau là.

Juste le fameux Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Projet\procedure_stock.php on line 11

ligne 11 qui correspond au $data=mysql_fetch_array($result);
 

ozilrit

Elite
T'espères vraiment que ta procédure retourne quelque chose ? :/
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
C'est à dire ozil??

Quand j'éxécute la procédure dans la fenêtre de comande mysql elle me retourne bien une réponse :/


 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
genre faut faire un out, j'y ai pas pensé ???? :S
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
CREATE PROCEDURE valeur3(IN idValeur INT, OUT nomValeur CHAR(255))
BEGIN
SELECT valeur1 INTO nomValeur FROM listeValeur WHERE idValeur=idListeValeur;
END /

après dans la fenêtre de commande toujours

CALL valeur3(12,@a)/
SELECT (@a)/

Je recoi bien le bon résultat.

Mais maintenant dans le php hmm hmm jvais tester des choses
 

eGm_

Gibon Blasé
$data['nomValeur']; tu as tester ?
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
<?php
//mysql_connect("localhost", "root", ""); // Connexion à MySQL
//mysql_select_db("Standards"); // Sélection de la base coursphp

mysql_connect("localhost", "root", "") or die("echec cnx mysql");
mysql_select_db("Standards") or die("echec select DB");

$query = 'SELECT valeur3(13,@a);';
$result = mysql_query($query);

$data=mysql_fetch_array($result);

echo $data['nomValeur'];

mysql_close(); // Déconnexion de MySQL
?>

Le problème vient du $data=mysql_fetch_array($result);

hmm qu'est ce que j'interprète mal ??
 

ozilrit

Elite
<?php
error_reporting (E_ALL);

$db = mysql_connect('localhost', 'root', '') or die('cnx : '.mysql_error());
mysql_select_db('Standards', $db) or die('db : '.mysql_error());
$result = mysql_query('CALL valeur3(13)', $db) or die ('qry : '.mysql_error());

echo '<pre>';
var_dump ($result);
print_r(mysql_fetch_array($result));
echo '</pre>';

mysql_free_result($result);
mysql_close();​

Lance ça et c/c.
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
Salut ozil !!

Il manque un param, c'est celui de sortie je pense, je vais étudier ton code merci bien !

qry : Incorrect number of arguments for PROCEDURE standards.valeur3; expected 2, got 1
 

ozilrit

Elite
Ouep, forcément si t'as changé la procédure. :/

Y a rien à étudier dans le code là, c'juste du debug.
 

ozilrit

Elite
Si la proc. te retourne bien des tuples sans OUT, bah tant mieux.

MySQL FTW!
 
1er
OP
[Clad]

[Clad]

Manipulateur de bits
Ok j'ai trouvé une solution

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("Standards"); // Sélection de la base coursphp

echo 'Connexion réussie <br/>';

mysql_query("call valeur3(12,@param)");
$resultset=mysql_query("SELECT @param");
$line=mysql_fetch_array($resultset);

echo $line[0];

mysql_close(); // Déconnexion de MySQL
?>
Merci à eGm_ et ozilrit de leur aide :love:
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut