Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    66

    Come estrarre una variabile MySQL con PHP

    Qualcuno sa dirmi come si fa ad estrarre una variabile di MySQL (del tipo @variabile) tramite uno script PHP?
    Per essere più precisi: ho uno script in PHP che esegue alcune query in un db MySQL l'ultima delle quali assegna un valore ad una variabile di MySQL tramite una istruzione "SELECT...INTO @variabile", e vorrei stampare a video il valore assegnato a questa variabile. Ho provato aggiungendo la query "SELECT @variabile", ma poi, facendo:

    Codice PHP:
    $risultato mysql_query($query,$connessione);
    .....
    while (
    $riga mysql_fetch_array($risultato)) {
        echo 
    $riga['@variabile'];  

    l'echo mi stampa il testo @variabile invece che il suo valore. In cosa sbaglio?

  2. #2
    A me funziona:

    Codice PHP:
    mysql_connect(...);
    mysql_query('SET @variabile=123');
    $risultato mysql_query('SELECT @variabile');
    $riga mysql_fetch_array($risultato);
    print_r($riga); 
    codice:
    Array
    (
        [0] => 123
        [@variabile] => 123
    )
    Forse l'errore sta da qualche altra parte...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    66
    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?

  4. #4

    Re: Come estrarre una variabile MySQL con PHP

    Originariamente inviato da Andreau
    Qualcuno sa dirmi come si fa ad estrarre una variabile di MySQL (del tipo @variabile) tramite uno script PHP?
    Per essere più precisi: ho uno script in PHP che esegue alcune query in un db MySQL l'ultima delle quali assegna un valore ad una variabile di MySQL tramite una istruzione "SELECT...INTO @variabile", e vorrei stampare a video il valore assegnato a questa variabile. Ho provato aggiungendo la query "SELECT @variabile", ma poi, facendo:

    Codice PHP:
    $risultato mysql_query($query,$connessione);
    .....
    while (
    $riga mysql_fetch_array($risultato)) {
        echo 
    $riga['@variabile'];  

    l'echo mi stampa il testo @variabile invece che il suo valore. In cosa sbaglio?
    select .... into @variabile FROM tabella..... ci vuole il riferimento alla tabella

    Se fai riferimento all'altro post devi tener presente che se utilizzi phpmyadmin devi in pratica (grossomodo) simulare i comandi da shell.

    Se usi uno script php non serve che tu prenda una variabile php, la trasferisci in una variabile di mysql e poi riversare con una query il result set in un'altra variabile mysql per poi andarla a leggere con una ullteriore query.

    usa direttamente le variabili php nella query.

    codice:
    select campo1, campo2, campo3
    from tabella
    where campo = '$val1'
    il riferimento che fai al tutorial e' per il solo utilizzo SQL.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    66
    Ok, mi torna, quindi le query $sql1 e $sql2 sono inutili e posso mettere le variabili $data_in_numerica e $data_out_numerica direttamente nella query $sql3, per cui diventerebbe:

    Codice PHP:
    $sql3 "SELECT prezzo('$data_in_numerica','$data_out_numerica','$pers_per_camera') INTO @prezzoTotale"
    Non capisco però come potrei fare in seguito per estrarre il valore di @prezzoTotale: al posto di questa variabile devo usare una variabile php? come faccio?
    Mi dici che per la "query select .... into @variabile" ci vuole il riferimento alla tabella, ma quale tabella? nel mio caso il select agisce su una funzione, non una tabella, no?
    Grazie per ora

  6. #6
    Non ho idea di cosa siano le cose che dici. Non ho seguito il tutorial.

    Se hai una "funzione" dovrebbe "funzionare". Prova a stampare le query. Forse non sono valorizzate e prezzo() rende NULL.

    echo $sql3;

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Originariamente inviato da Andreau
    Codice PHP:
    $sql3 "SELECT prezzo(@inizioPeriodo,@finePeriodo,'$pers_per_camera') INTO @prezzoTotale"
    Il SELECT ... INTO variabile mi è sconosciuto. Butto lì qualche idea: eseguire il mysql_fetch_array() direttamente su $sql3 (ottimale: usa gli indici per accedere al risultato, non le chiavi) o usare:

    Codice PHP:
    $sql3 "SET @prezzoTotale = prezzo($data_in_numerica,$data_out_numerica,'$pers_per_camera')"

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    66
    Mi è venuto un lampo: non è che, invece della stored function, devo usare una analoga funzione definita in php?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.