Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Passare un valore a php dalle stored procedures
giovedì 01 novembre 2007 - 15.37
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
pino8314
Profilo
| Newbie
29
messaggi | Data Invio:
gio 1 nov 2007 - 15:37
Come da titolo, qualcuno sa darmi qualche dritta su come ottenere un valore in php da delle stored procedures....
esempio
eseguo una insert dalla stored procedure(non le stored function)e dopo aver effettuato l'inserimento del db reperisco, attraverso LAST_INSERT_ID(), l'id dell'ultima insert....ma come faccio a passarlo alla pagina php che esegue la stored procedure?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 1 nov 2007 - 21:18
>Come da titolo, qualcuno sa darmi qualche dritta su come ottenere
>un valore in php da delle stored procedures....
Ciao, dopo averti fatto (s)postare su questo link, ho controllato qui e là..
e qualcosa ho trovato..
http://it.php.net/manual/it/ref.pdo.php
parla di pdo, per poter chiamare stored procedure anche con parametri di output..
prima di metà pagina si legge:
"Esempio 10. Calling a stored procedure with an input/output parameter
<?php
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value = 'hello';
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);
// call the stored procedure
$stmt->execute();
print "procedure returned $value\n";
?> "
prova e facci sapere..
ciao!
Alx81 =)
http://blogs.dotnethell.it/suxstellino
pino8314
Profilo
| Newbie
29
messaggi | Data Invio:
ven 2 nov 2007 - 08:35
grazie per la risposta, in questo forum ci sono persone molto cordiali, grazie veramente...
adesso veniamo a noi....alla fine ho risolto in 'un altro modo, vi posto un piccolo esempio che potrebbe essere utile a qualcun altro
Procedura
DELIMITER $$
DROP PROCEDURE IF EXISTS `prova`.`esegui` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `esegui`(OUT param INT)
BEGIN
START TRANSACTION;
insert into pp(val)values('4');
insert into pp_2(val)values('4');
SET param = LAST_INSERT_ID();
COMMIT;
END $$
DELIMITER ;
come potete vedere ho impostato un valore di output nella procedura
`esegui`(OUT param INT)
valore che setto dopo aver inserito la mia insert, infine da php
//richiamo la procedura attribuendo una variabile che mi servira per ottenere il valore di ritorno
$call = "call esegui(@n);";
$query = mysql_query($call);
//prendo il valore di ritorno
$call = "select @n";
$s = mysql_query($call);
eseguendo la query soprastante non faccio altro che creare una tabella virtuale con una colonna che si chiama @n. Come per tutte le normali select, per reperire le righe della select stessa, eseguo un
$r = mysql_fetch_assoc($s);
infine stampo il valore
echo $r['@n'];
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 2 nov 2007 - 09:53
>grazie per la risposta, in questo forum ci sono persone molto
>cordiali, grazie veramente...
>
>adesso veniamo a noi....alla fine ho risolto in 'un altro modo,
>vi posto un piccolo esempio che potrebbe essere utile a qualcun
>altro
E questo è il passo successivo, che ci perde un po' in prestazioni ma che prima o poi avremmo raggiunto, ok. Se riesci usa il parametro di output. Altrimenti, ottimo lavoro!
ciao e grazie per il complimenti al forum
Alx81 =)
http://blogs.dotnethell.it/suxstellino
pino8314
Profilo
| Newbie
29
messaggi | Data Invio:
ven 2 nov 2007 - 14:04
perchè secondo te ci perde in prestazioni?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 2 nov 2007 - 14:34
>perchè secondo te ci perde in prestazioni?
perchè esegui più istruzioni, passando da una tabella viruale..
invece, leggere la LAST_INSERT_ID è un'istruzione veloce e che fa il sistema in una sola chiamata..
ma è del tutto trascurabile.. è solo per fare il pignolo
Alx81 =)
http://blogs.dotnethell.it/suxstellino
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !