• User Attivo

    dati estratti dal database... cancellati!

    ...Mi spiego meglio...

    
    [...]
    $db= new db(/*parametri connessione*/);
    $result=$db->query('SELECT /*dati da estrarre FROM tabella*/');
    for($i=1;$i<=4;$i++) {
          while ($giocatore = mysql_fetch_object($result)) 
                   $stringa=$stringa.$giocatore->idGiocatore;
         
        }
    return $stringa;
    ```Il primo ciclo viene eseguito corretamente, mentre nei successivi l'oggetto $giocatore restituito da "mysql_fetch_object" è vuoto!
    Questo problema viene ovviato se inserisco
    

    $result=$db->query('SELECT /dati da estrarre FROM tabella/');

    all'interno del ciclo for, ma vorrei evitare di effettuare ogni volta la query! Qualcuno mi sa dire per quale motivo dopo il primo ciclo $giocatore (e quindi penso anche $result) è vuoto?? Grazie in anticipo.

  • ModSenior

    Ciao owen,

    a cosa ti serve il ciclo for da te utilizzato?


  • User

    Così a prima impressione quel ciclo for che si ferma dopo 4 iterazioni appare piuttosto inutile!

    Perchè non usi semplicemente il while ( togliendo il for )?


  • User Attivo

    Si scusate il ciclo for mi serve, il 4 nel codice vero è sostituito da una variabile. Ora non ho il codice da postare ma appena posso lo metto per farvi capire bene...
    Nella sostanza comunque sono obbligato a eseguire tutte le volte la query all'interno del ciclo? Vuol dire che mysql_fetch_object quando opera su $result poi lo cancella?


  • User

    Il motivo per cui ti si faceva notare il for è che all'interno tu scorri tutti gli oggetti presenti in $result.
    Credo sia per quello che funziona solo il primo ciclo!
    Vediamola in pseudo codice:

    
    mi connetto al db
    eseguo la query e salvo i risultati in $result
    per un numero x di elementi {
        finchè esistono oggetti in $result {
           assegna a stringa $giocatore->idGiocatore
        }
    }
    
    ```Vista così mi sembra possibile che funzioni solo il primo ciclo.... dopo il primo tu hai svuotato $result con il while.
    
    Perchè non segui l'esempio dato dal manuale di PHP ( php.net/manual/en/function.mysql-fetch-object.php )?
    [php]
    mysql_connect("hostname", "user", "password");
    mysql_select_db("mydb");
    $result = mysql_query("select * from mytable");
    while ($row = mysql_fetch_object($result)) {
        echo $row->user_id;
        echo $row->fullname;
    }
    mysql_free_result($result);
    [/php]