[PHP] Executer une procédure stocké

Discussion dans 'Web, design' créé par [Clad], 2 Juin 2008.

Statut de la discussion:
Fermée.
  1. Offline
    [Clad] Elite
    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
    [Clad], 2 Juin 2008
    #1
  2. Offline
    eGm_ Guinea Trump
    $query = 'SELECT valeur1(13);';
    $result = mysql_query($query);
    eGm_, 2 Juin 2008
    #2
  3. Offline
    [Clad] Elite
    <?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:
    [Clad], 2 Juin 2008
    #3
  4. Offline
    eGm_ Guinea Trump
    $data=mysql_fetch_array($result);

    echo $data;
    eGm_, 2 Juin 2008
    #4
  5. Offline
    [Clad] Elite
    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:
    Et je recoi en retour:
    C'est bizarre, tu as une idée d'où provient cette erreur??

    Merci de ton aide dans tout les cas ;)
    [Clad], 2 Juin 2008
    #5
  6. Offline
    eGm_ Guinea Trump
    enlève le procedure dans ta query.
    eGm_, 2 Juin 2008
    #6
  7. Offline
    [Clad] Elite
    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??
    [Clad], 2 Juin 2008
    #7
  8. Offline
    eGm_ Guinea Trump
    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");
    ?>
    eGm_, 2 Juin 2008
    #8
  9. Offline
    [Clad] Elite
    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);
    [Clad], 2 Juin 2008
    #9
  10. Offline
    ozilrit Touriste
    T'espères vraiment que ta procédure retourne quelque chose ? :/
    ozilrit, 2 Juin 2008
    #10
  11. Offline
    [Clad] Elite
    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 :/


    [IMG]
    [Clad], 2 Juin 2008
    #11
  12. Offline
    [Clad] Elite
    genre faut faire un out, j'y ai pas pensé ???? :S
    [Clad], 2 Juin 2008
    #12
  13. Offline
    [Clad] Elite
    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
    [Clad], 2 Juin 2008
    #13
  14. Offline
    eGm_ Guinea Trump
    $data['nomValeur']; tu as tester ?
    eGm_, 2 Juin 2008
    #14
  15. Offline
    [Clad] Elite
    <?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 ??
    [Clad], 2 Juin 2008
    #15
  16. Offline
    ozilrit Touriste
    <?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.
    ozilrit, 2 Juin 2008
    #16
  17. Offline
    [Clad] Elite
    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
    [Clad], 2 Juin 2008
    #17
  18. Offline
    ozilrit Touriste
    Ouep, forcément si t'as changé la procédure. :/

    Y a rien à étudier dans le code là, c'juste du debug.
    ozilrit, 2 Juin 2008
    #18
  19. Offline
    ozilrit Touriste
    Si la proc. te retourne bien des tuples sans OUT, bah tant mieux.

    MySQL FTW!
    ozilrit, 2 Juin 2008
    #19
  20. Offline
    [Clad] Elite
    Ok j'ai trouvé une solution

    Merci à eGm_ et ozilrit de leur aide :love:
    [Clad], 3 Juin 2008
    #20
Statut de la discussion:
Fermée.