Visualizzazione dei risultati da 1 a 7 su 7

Discussione: loop query mysql

  1. #1
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565

    loop query mysql

    Ciao a tutti, ho creato una funzione che mi consente di fare query, passando delle variabili a questa, ma ho un problema.

    La funzione a grandi linee è questa:

    Codice PHP:

    function test(variabile,variabile2,variabile3) {
    // altro codice
         
    $result mysql_query($query$db);
                  
    $row mysql_fetch_array($result);
         return 
    $row;

    Il codice di richiamo è questo:

    Codice PHP:

    $query 
    test(yyyy,xxxx,zzzz);

    while (
    $row =  $query) {
    // altro codice



    Con questo codice viene a formarsi un loop infinito e mi stampa infinitamente la rpima riga del database, spostando però la funzione mysql_fetch_array($result) nel while apportando le opportune modifiche, questo funziona tranquillamente. Come posso risolvere?
    Nulla

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: loop query mysql

    Originariamente inviato da Electro
    Ciao a tutti, ho creato una funzione che mi consente di fare query, passando delle variabili a questa, ma ho un problema.

    La funzione a grandi linee è questa:

    Codice PHP:

    function test(variabile,variabile2,variabile3) {
    // altro codice
         
    $result mysql_query($query$db);
                  
    $row mysql_fetch_array($result);
         return 
    $row;

    Il codice di richiamo è questo:

    Codice PHP:

    $query 
    test(yyyy,xxxx,zzzz);

    while (
    $row =  $query) {
    // altro codice



    Con questo codice viene a formarsi un loop infinito e mi stampa infinitamente la rpima riga del database, spostando però la funzione mysql_fetch_array($result) nel while apportando le opportune modifiche, questo funziona tranquillamente. Come posso risolvere?
    non ho molto capito la logica del codice, ma sicuramente l'errore è nel secondo while, dove assegni $row a $query.

    while($row == $query), altrimenti è sempre vero..

    ciao

  3. #3
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565

    Re: Re: loop query mysql

    Originariamente inviato da gianiaz
    non ho molto capito la logica del codice, ma sicuramente l'errore è nel secondo while, dove assegni $row a $query.

    while($row == $query), altrimenti è sempre vero..

    ciao
    Impostado come hai detto tu, il ciclo non non processa più nulla
    Nulla

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: Re: Re: loop query mysql

    Originariamente inviato da Electro
    Impostado come hai detto tu, il ciclo non viene più eseguito
    come ti ho detto non ho capito il tuo codice.

    Secondo me fai meglio a ritornare la variabile $result, anche perchè ogni volta che chiami la funzione fai una query, e non credo che sia quello che tu vuoi.

    Poi quando vuoi eseguire la query farai:

    codice:
    function test(variabile,variabile2,variabile3) {
    // altro codice
         $result = mysql_query($query, $db);
         return $result
    }
    while ($row =  mysql_fetch_array(test(yyyy,xxxx,zzzz)) {
    ...
    
    }

    ciao

  5. #5
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Allora provo a spiegarmi meglio.
    Quello che io voglio, è una funzione che gestisca tutta la query, e che mi faccia ritornare solo i dati che devo poi processare con il while o altre funzioni.

    Nella funzione, lui esegue dei controlli, fa delle operazioni e poi effettua la query, e qui nessun problema. Poi il risultato della query lo faccio processare dalla funzione mysql_fetch_array(), e restituisco il suo valore alla chiamata.

    Codice PHP:

    function test(variabile,variabile2,variabile3) {
    // altro codice
         
    $result mysql_query($query$db);
                  
    $row mysql_fetch_array($result);
         return 
    $row;

    Nella chiamata, imposto i valori che la funzione deve processare per effettuare la query, ed il mio intento è quello poi di effettuare un operazione per ogni record (tipo fare una lista di tutti i valori presenti nella tabella) ed uso questo codice:
    Codice PHP:

    while ($row =  test(yyyy,xxxx,zzzz);) {
    // altro codice



    Ma questo genera un loop, dove processa solo la prima riga che estrae dal database all'infinito.

    Spero di essere stato chiaro in quello che voglio fare.

    Grazie dell'aiuto
    Nulla

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Electro
    Allora provo a spiegarmi meglio.
    Quello che io voglio, è una funzione che gestisca tutta la query, e che mi faccia ritornare solo i dati che devo poi processare con il while o altre funzioni.

    Nella funzione, lui esegue dei controlli, fa delle operazioni e poi effettua la query, e qui nessun problema. Poi il risultato della query lo faccio processare dalla funzione mysql_fetch_array(), e restituisco il suo valore alla chiamata.

    Codice PHP:

    function test(variabile,variabile2,variabile3) {
    // altro codice
         
    $result mysql_query($query$db);
                  
    $row mysql_fetch_array($result);
         return 
    $row;

    Nella chiamata, imposto i valori che la funzione deve processare per effettuare la query, ed il mio intento è quello poi di effettuare un operazione per ogni record (tipo fare una lista di tutti i valori presenti nella tabella) ed uso questo codice:
    Codice PHP:

    while ($row =  test(yyyy,xxxx,zzzz);) {
    // altro codice



    Ma questo genera un loop, dove processa solo la prima riga che estrae dal database all'infinito.

    Spero di essere stato chiaro in quello che voglio fare.

    Grazie dell'aiuto
    allora, questo succede perchè:

    - Chiami la prima volta la funzione, questa esegue la query, poi passi da mysql_fetch_array, che assegna il primo risultato della query a $row.

    - nel while assegni a $row il risultato della funzione (che non è altro che un array), quindi sono uguali e il while continua, richiamando sempre la stessa funzione e ottenendo sempre come risultato il primo record della tua select.

    E' proprio sbagliato il concetto, $result è una risorsa, e con mysql_fetch_array puoi estrarre un record da questa, ma devi ciclare sempre la stessa, in modo che il cursore si sposti al record successivo, mentre tu la esegui sempre su una result diversa che parte sempre dal primo record.

    Come ti ho detto prima, il tuo metodo può funzionare se al posto di $row ritorni $result, e nel secondo while cicli il risultato della funzione.

    ciao

  7. #7
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Originariamente inviato da gianiaz
    allora, questo succede perchè:

    - Chiami la prima volta la funzione, questa esegue la query, poi passi da mysql_fetch_array, che assegna il primo risultato della query a $row.

    - nel while assegni a $row il risultato della funzione (che non è altro che un array), quindi sono uguali e il while continua, richiamando sempre la stessa funzione e ottenendo sempre come risultato il primo record della tua select.

    E' proprio sbagliato il concetto, $result è una risorsa, e con mysql_fetch_array puoi estrarre un record da questa, ma devi ciclare sempre la stessa, in modo che il cursore si sposti al record successivo, mentre tu la esegui sempre su una result diversa che parte sempre dal primo record.

    Come ti ho detto prima, il tuo metodo può funzionare se al posto di $row ritorni $result, e nel secondo while cicli il risultato della funzione.

    ciao
    quindi devo per forza mettere il mysql_fetch_array nel while... ok ti rigrazio.

    Nulla

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 © 2025 vBulletin Solutions, Inc. All rights reserved.