- Home
- Categorie
- Coding e Sistemistica
- Coding
- Richiamare stored procedure mysql da codice php
-
Richiamare stored procedure mysql da codice php
Salve a tutti,
ho creato una stored procedure su mysql che vuole un parametro in ingresso:
CREATE DEFINER=
root
@localhost
PROCEDUREsp_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...