Procédure Stocké & PHP

Procédure Stocké & PHP - PHP - Programmation

Marsh Posté le 06-05-2014 à 15:26:07    

Bonjour,

 

Dans la suite du développement d'un projet web je vais avoir besoin des procédures stockés. J'ai commencé à regarder leur fonctionnement et utilisation le problème c'est que je n'arrive pas à les créés et utilisé via PHP...

 

Voici le code que j'utilise pour m’entraîner, le je veux simplement récupérer toutes les variables de la table ProcStocker  :

 
Code :
  1. $sql = "CREATE PROCEDURE test2 (OUT value INT)
  2. BEGIN
  3. SELECT Var FROM ProcStocker;
  4. END|";
  5. $reponse = $connexion->prepare($sql);
  6. $reponse->execute();
 

J'ai aucun message d'erreur mais la procedure ne se créé pas alors que si je met le sql sous PhpMyAdmin la procédure ce créé


Message édité par OrcusZ le 06-05-2014 à 15:50:38

---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 06-05-2014 à 15:26:07   

Reply

Marsh Posté le 06-05-2014 à 16:35:05    

Est-ce qu'il ne faut pas que tu fasses un commit explicite ? Si t'es en transactionnel (avec un BD en InnoDB par ex), y'a pas forcément par défaut d'auto-commit ;)
 
Sinon,  c'est normal le "|" après le "END" ? J'aurais plutôt penser qu'il fallait un ";"...


---------------
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
Reply

Marsh Posté le 06-05-2014 à 16:36:27    

http://fr.openclassrooms.com/infor [...] -procedure
 
-> Pour le "|", t'as pas pensé avant à mettre "DELIMITER |"...


---------------
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
Reply

Marsh Posté le 06-05-2014 à 23:10:14    

Bonsoir,
 
Juste une petite erreur j'ai oubliez de mettre le délimiter mais ça ne fonctionne pas non plus avec...
 
Tu entend quoi par un commit explicite / auto-commit?
Parce que j'en ai jamais entendu parler en SQL


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 07-05-2014 à 09:49:21    

:hello: !

 

Tu es sûr que tu n'as aucun message d'erreur en retour ? :??:

 

Je pensais aussi à un souci de droit de création de procédure mais ça doit pas être ça [:cupra]


Message édité par Soileh le 07-05-2014 à 09:50:06

---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 07-05-2014 à 09:52:53    

En BD transactionnelle, tu as ce qu'on appelle les commit et roll back. Quand tu commences une transaction (une ou plusieurs requêtes sql de type insert, delete, update ou select...), tant que t'as pas fait un commit, toutes les modifs que t'as faites ne sont pas visibles des autres utilisateurs et pas sauvegardées dans la BD. Elles sont enregistrées après un commit. L'avantage, c'est qu'en cas d'abandon de la transaction (genre, une erreur est détectée en cours), tu fais un roll back et tu retrouve l'état de la BD avant le début de la transaction.
 
En général, les BD sont en auto-commit, c'est-à-dire que le SGBD fait un commit de lui-même pour valider chaque requête sql faite par une appli. Mais c'est pas systématique. Donc, si t'es en innoDB comme moteur de stockage 'et pas en MyIsam), regardes dans la conf de mysql si t'es bien en auto-commit ou pas.


---------------
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
Reply

Marsh Posté le 07-05-2014 à 21:24:57    

Bonsoir,
 
Merci de vos réponse et les explications.
 
Non malheureusement absolument pas de message d'erreurs et je suis en InnoDB donc je vais checker les conf mysql


---------------
Made you your own sentence without believing that of the others...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed