Ziman
Messages postés245Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 septembre 2008
-
22 avril 2008 à 22:36
gr43
Messages postés95Date d'inscriptionmardi 20 mai 2008StatutMembreDernière intervention 8 septembre 2010
-
16 déc. 2008 à 20:40
Bonjour,
on m'a récemment parlé des stored procedure et convaincu d'en faire le plus possible pour économiser le traffic entre le client et le serveur. Je suis donc en train de transformer mes requêtes en stored procedure. Pour les requêtes qui ne renvoyent rien ou juste une valeur, pas de soucis, mais imaginons que je veux faire ceci :
SELECT id_joueur WHERE age > 15;
Cela renverra un tableau de données, comment puis-je renvoyer ca à ma page php ? Je ne veux pas passer par des astuces du type "concatener le résultat" ou autre car parfois il faut renvoyer plus de 20 champs...
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 23 avril 2008 à 01:42
je doute que ca soit possible...
en fait, les procedures stoquees servent essentiellement a faire de l'abstraction. Le trafique n'est pas vraiment economise, mais par contre, tu gagnes en abstraction : d'un cote t'as ton schemat sql, de l'autre, ton php
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 avril 2008 à 19:12
Ah non sur 1 select non : sur plusieurs select, ou sur un curseur. Je parlais de récupérer un résultat multiligne, moi. Ce n'est pas possible avec l'extension mysql il me semble, mais ça l'est avec mysqli.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 23 avril 2008 à 19:28
mais sans parler de php... en ne parlant que de mysql, je ne vois pas comment tu peux faire un resultat multilignes sans curseur ou select, (ah si, show...)
mais renvoyer un resultat multiligne a partir d'une procedure stoquee, j'ai toujours cru que c'etait impossible en fait...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 avril 2008 à 19:42
Tu peux très bien faire plusieurs select, ou foutre un curseur, dans une procédure stockée. C'est même souvent le cas à vrai dire. Je suis confronté à ce "problème" au taf mais sur mssql. C'est pourquoi j'ai implémenté dans ma classe d'abstraction DB une manière facile de récupérer plusieurs jeux de résultat, sans avoir rien à faire de plus que d'habitude. Toutes les procédures stockées que l'on a sur un de nos applicatifs renvoient plusieurs jeux de résultats (enfin, pas toutes...beaucoup...uniquement celles qui renvoient quelque chose, en plus, évidemment).
Ziman
Messages postés245Date d'inscriptiondimanche 27 avril 2003StatutMembreDernière intervention26 septembre 2008 24 avril 2008 à 09:52
MMMmmmmmmmmmmh
Merci pour cette petite discussion instructive. L'explication de coucou747 parait interessante mais généralement, c'est du multi colonne justement, donc un peu ennuyant.
Bah, c'est pas non plus trop grave, je suis pas forcément obligé de tout passer en procédure stockée.
gr43
Messages postés95Date d'inscriptionmardi 20 mai 2008StatutMembreDernière intervention 8 septembre 2010 16 déc. 2008 à 20:40
Salut,
Bon c'est sans doute un peu tard mais ça pourra peut être servir à
quelqu'un d'autre. En effet, c'est bien possible de récupérer un jeu
d'enregistrement à partir d'une procédure stockée en mysql, que ce soit
avec mysql ou mysqli qui sont des drivers multi_statement. Lorsqu'on execute une PS dans par mysql query
browser on obtient bien le résultat pour par exemple SELECT id_joueur WHERE age > 15; pour obtenir de même en php il faut bien rajouter en 5ème paramètre le flag multi_statement ce qui fait mysql_connect ($serveur, $login, $mdp, true, 65536); et à voir pour mysqli mais c'est également possible.