quesito su mysql_fetch_row

volevo chiedervi un chiarimento a riguardo di un pezzo di codice.

e' brutto, è vero, ma funziona:

  public function riempi(){
  $tempfeed=mysql_query("SELECT * FROM Utenti"); 
  $i=0;
   while ($i<$N && $feed = mysql_fetch_row($tempfeed))
      {
         
         $feed2 = $feed['2'];
         $id = $feed['0'];

La tabella utenti ha queste colonne: id_utente, username, feedback, password.

quello che dovrebbe fare questa parte di codice è: eseguire il ciclo da 0 fino ad N cioè controllare tutti gli utenti, partendo dal primo, ne preleva l'id utente e i feedback e poi prosegue con altre operazioni...

è corretto il codice scritto in questo modo?! fa quello che intendo?! effettivamente a giudicare dal contenuto del database sembra funzionare...

nel caso il codice fosse corretto allora un un dubbio: perchè non funziona questa istruzione?:

      $feed2 = $feed['feedback'];
         $id = $feed['id_utente'];

mi dice che i 2 index non esistono...

grazie, saluti...

inviato 6 anni fa
Kyuubi_Arcanis
X 0 X

Il modo più corretto di effettuare una query e leggere tutti i risultati utilizzando  mysql_fetch_row è il seguente:

$risultato = mysql_query("SELECT id, nome FROM utenti ");
 
while ($row = mysql_fetch_row($risultato)) {
  echo $row[0] ,  $row[1] , "\n";
}

Come puoi vedere:

  • Il ciclo while non ha bisogno di contatori ($i e $n) perché si arresta automaticamente alla lettura dell'utlimo record
  • Per accedere alle singole colonne della tabella devi usare degli indici numerici $row[0] ,  $row[1] , ecc.

Se vuoi usare i nomi delle colonne devi usare mysql_fetch_assoc oppure mysql_fetch_array. Tutti i dettagli li trovi qui, compreso un confronto tra le varie istruzioni di fetch:

http://www.phpnews.it/corsi/corso-php-mysql/selezione-dei-dati-e-recupero-dei-risultati-i/

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

davvero grazie, avevo sospettato che fosse un problema di indici numerici/stringhe

risposto 6 anni fa
Kyuubi_Arcanis
X 0 X

ciao

Io di solito per estrarre i dati dal db utilizzo una cosa del genere:

   $query = "SELECT * FROM ".$tbl_prefix."user WHERE auth = '$auth' AND username = '$user'";

   $result = mysql_query($query);   

   $row = mysql_fetch_array($result);

e poi con i vari

$row['mail']

$row['mail']

ecc ecc

recupero i valori dei campi che mi interessano.

Se ho capito bene mysql_fetch_array($result);

recupera tutti i valori dei campi di un record e li inserisce in un array. Giusto?

Ma se a me interessa solo UN valore di un solo campo è possibile evitare di utilizzare questa funzione?

Grazie

risposto 6 anni fa
frankphp
X 0 X

che io sappia no

risposto 6 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda