Sto diventando pazzo!
Effettivamente, quello che mi hai scritto funziona, quindi "SELECT @variabile" va bene. Il fatto è che nel mio caso c'è di mezzo una stored function il cui risultato viene assegnato ad una variabile. Accade però che il tutto attraverso la finestra di mysql in phpmyadmin funziona, ovvero facendo "SELECT @variabile" recupero il valore di questa (quindi decade l'ipotesi che il baco sia nella funzione, no?), mentre non funziona tramite lo script in php perché, facendo print_r($riga);, ottengo un array vuoto: Array ( [0] => [@variabile] => ) .
Di seguito riporto la porzione dello script, che fa parte di un'applicazione del tutorial presente nella guida mysql http://database.html.it/guide/lezion...ioni-alberghi/ .
Codice PHP:
$sql1 = "SET @inizioPeriodo='$data_in_numerica'";
$sql2 = "SET @finePeriodo='$data_out_numerica'";
$sql3 = "SELECT prezzo(@inizioPeriodo,@finePeriodo,'$pers_per_camera') INTO @prezzoTotale";
$sql4 = "SELECT @prezzoTotale";
mysql_query($sql1,$connessione);
mysql_query($sql2,$connessione);
mysql_query($sql3,$connessione);
$risultati_mysql = mysql_query($sql4,$connessione);
$riga = mysql_fetch_array($risultati_mysql);
print_r($riga);
La stored function l'ho creata tramite phpmyadmin con il codice seguente:
codice:
CREATE FUNCTION prezzo(arrivo DATE, partenza DATE, personePerCamera ENUM('2','3','4'))
RETURNS DECIMAL(7,2)
READS SQL DATA
BEGIN
DECLARE varData DATE;
DECLARE varTotale DECIMAL(7,2) default 0;
DECLARE varPrezzo DECIMAL(7,2);
SET varData = arrivo;
WHILE varData < partenza DO
SELECT prezzo INTO varPrezzo FROM prezzi
WHERE varData BETWEEN periodoDal AND periodoAl
AND persone_stanza = personePerCamera;
SET varTotale = varTotale + varPrezzo;
SET varData = DATE_ADD(varData,INTERVAL 1 day);
END WHILE;
RETURN varTotale;
END
Qualcuno mi sa aiutare in questo rompicapo?