- Home
- Categorie
- Coding e Sistemistica
- PHP
- dati estratti dal database... cancellati!
-
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.
-
Ciao owen,
a cosa ti serve il ciclo for da te utilizzato?
-
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 )?
-
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?
-
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]