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