- Home
- Categorie
- Coding e Sistemistica
- Coding
- Richiamare stored procedure mysql da codice php
- 
							
							
							
							
							
Richiamare stored procedure mysql da codice phpSalve a tutti, ho creato una stored procedure su mysql che vuole un parametro in ingresso: CREATE DEFINER= root@localhostPROCEDUREsp_GetElencoFatture(IN mese_anno varchar(7))
 BEGIN
 SELECT *
 , df.df_prezzo_ * df.df_qta as imponibile
 , (df.df_prezzo_ * df.df_qta) / 100 * df.df_iva as iva
 , df.df_prezzo_ * df.df_qta + ((df.df_prezzo_ * df.df_qta) / 100 * df.df_iva) as tot_fatt
 FROM testfat tf
 inner join detfat df
 on tf.tf_id = df.df_tf_id
 inner join clienti c
 on tf.TF_CLI_ID = c.CLI_ID
 WHERE RIGHT(TF_DATA, 7) = mese_anno
 group by TF_ID,TF_DATA
 order by TF_DATA DESC
 ,TF_ID DESC;END Da php voglio richiamarla passando il parametro in questo modo: $meseanno = '02/2009'; 
 $rs=mysql_query("CALL sp_GetElencoFatture('".$meseanno."')");Ma quando arrivo al punto while($row = mysql_fetch_array($rs)) 
 {
 $IDFattura=$row[TF_ID];
 $NumeroFattura=$row[TF_NUMERO];
 $RIFORDINE=$row[TF_RIFERIM];
 $Data=$row[TF_DATA];
 $SKANNO=substr($row[TF_DATA],6);
 $DesAzienda=$row[CLI_RAGSOC];
 $IDAzienda=$row[TF_CLI_ID];
 $impo=$row[imponibile];
 $iva=$row[iva];
 $tot=$row[tot_fatt];
 }sula pagina ricevo questo errore: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource Ho cercato di capire dove è il problema, ma senza successo. 
 Se provo ad inserire in mysql_query la query che si trova nella stored procedure, tutto funziona correttamente, ma la chiamata alla stored invece no.Avete idea di cosa sto sbagliando? 
 
- 
							
							
							
							
							Forse perchè non ha nessuna riga? Quindi non riesce a convertilo? 
 
- 
							
							
							
							
							
Se per nessuna riga intendi che non c'è nessun dato nella tabella del database, allora non è il mio caso. 
 Se eseguo direttamente la SELECT contenuta nella stored procedure all'interno del codice php, sulla pagina ottengo il risultato che mi aspetto.
 E così vorrei che fosse richiemando la stored procedure, ma questa non funziona.
 
- 
							
							
							
							
							
Facendo ulteriori ricerche in rete, ho trovato la soluzione al problema. 
 La posto per permettere a chi si trovasse nella stessa situazione di avere a disposizione la soluzione.Le stored procedure sono state introdotte dalla versione di MySql 5.0. Per tale motivo per richiamarle è necessario usare gli oggetti della libreria php_mysqli.dll invece che della libreria php_mysql.dll. Ovviamente tale libreria va prima abilitata nel file php.ini. Quindi con l'utilizzo delle librerie giuste, è possibile fare il richiamo alle stored procedure all'interno del codice php. Es.: 
 $mysqli=new mysqli("nome_host", "nome_utente", "password", "database");
 $rs=$mysql->query("CALL nome_stored_procedure([parametri])");while($row=mysqli_fetch_array($rs)) 
 {
 [...codice php...]
 }Mentre in questo caso non funzionerebbe: 
 $link= mysql_connect("nome_host","nome_utente","passwprd") or die (mysql_error());
 mysql_select_db("database",$link) or die ("IMPOSSIBILE APRIRE IL DB");$rs=mysql_query("CALL nome_stored_procedure([parametri])"); 
 while($row=mysql_fetch_array($rs))
 {
 [...codice php...]
 }generando l'errore 'Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource'. Ma queste cose immagino le sapevate già. 
 
- 
							
							
							
							
							Ti ringrazio in anticipo a nome degli altri utenti... 