query fuori condizione if?

Ciao

Ho questo pezzo di codice php:

....

   Db_connect();
      $query="SELECT * FROM ".$tbl_prefix."user WHERE id = '$id'";
      $risultato = mysql_query($query) or die("<img src=\"../images/button_cancel.png\"> <span class=\"Stile7\">Errore durante l'esecuzione della query</span>");
      if($num_righe=mysql_fetch_row($risultato))            
      {
         $campo = mysql_fetch_array($risultato);
         $utente = $campo['username'];
         
         echo $utente."<br>";
         
..............

ho messo l'echo per controllare gli output in quanto non mi rendevo conto del risultato.

Nel caso descritto sopra non ho nessun nome. L'echo non mi da risultato.

Se modifico così:

   Db_connect();
      $query="SELECT * FROM ".$tbl_prefix."user WHERE id = '$id'";
      $risultato = mysql_query($query) or die("<img src=\"../images/button_cancel.png\"> <span class=\"Stile7\">Errore durante l'esecuzione della query</span>");
                    $campo = mysql_fetch_array($risultato);
         $utente = $campo['username'];
         
         echo $utente."<br>";

      if($num_righe=mysql_fetch_row($risultato))            
      {
         
         
..............

in questo caso il nome utente è visualizzato e la query funziona.

C'è qualcosa che non ho preso in considerazione o è normale che all'interno di una condizione la query :

$risultato = mysql_query($query)

sia come dire.."dimenticata"?

Grazie

inviato 6 anni fa
frankphp
X 0 X

Il risultato della query viene letto da mysql_fetch_row che oltre a restituire il valore incrementa il puntatore all'array

risultante dalla query. In questo caso hai solo un valore come risultato e quindi la seconda chiamata effettuata da mysql_fetch_array non ritorna nulla.

Nel primo caso avrai il risultato in $num_righe, prova

echo $num_righe['username']."<br>";

comunque non capisco l'uso della variabile $num_righe...

risposto 6 anni fa
civre
X 0 X

sarebbe sufficiente questo:

$query="SELECT * FROM ".$tbl_prefix."user WHERE id = '$id'";
$risultato = mysql_query($query) or die("<img src=\"../images/button_cancel.png\"> <span class=\"Stile7\">Errore durante l'esecuzione della query</span>");
$campo = mysql_fetch_row($risultato);
$utente = $campo['username'];
echo $utente."<br>";

con l'if cosa vuoi verificare?

risposto 6 anni fa
civre
X 0 X

Il risultato della query viene letto da mysql_fetch_row che oltre a restituire il valore incrementa il puntatore all'array

risultante dalla query. In questo caso hai solo un valore come risultato

Nel primo caso avrai il risultato in $num_righe, prova

echo $num_righe['username']."<br>";

incrementa il puntatore ....

e quindi la seconda chiamata effettuata da mysql_fetch_array non ritorna nulla.

azz questo non lo sapevo.

comunque non capisco l'uso della variabile $num_righe...

stavo integrando un po' di codice ad un altro già esistente non mio:

   if($num_righe=mysql_fetch_row($risultato))..

controlla l'esistenza di un utente se si

continua con la cancellazione di un record.

$query="DELETE FROM ".$tbl_prefix."user WHERE id = '$id'";

e continua ancora. In pratica dopo aver cancellato l'utente il nome dello stresso mi serve ancora per cancellare tramite una funzione anche le sue cartelle con dentro i file.

In ogni caso pensavo di risolvere (e ho visto che va bene lo stesso) inserendo la variabile in sessione con il nome

dell'utente già estrapolato in una funzione precedente della stessa pagina.

Volevo evitare di inserire dati sempre in sessione..già abuso di questo metodo :P

Se hai altri suggerimenti o qualcos'altro da aggiungere non farti problemi

Grazie

risposto 6 anni fa
frankphp
X 0 X

scusami ora ho poco tempo...

comunque rimanendo con il tuo esempio puoi fare così:

$query="SELECT * FROM ".$tbl_prefix."user WHERE id = '$id'";
$risultato = mysql_query($query) or die("<img src=\"../images/button_cancel.png\"> <span class=\"Stile7\">Errore durante l'esecuzione della query</span>");
if ($campo = mysql_fetch_row($risultato)) {
     $utente = $campo['username'];
     echo $utente."<br>";
}
risposto 6 anni fa
civre
X 0 X

scusami

ho provato a fare così (giusta una prova);

$risultato = mysql_query($query) or die("<img src=\"../images/button_cancel.png\"> <span class=\"Stile7\">Errore durante l'esecuzione della query</span>");

if($num_righe=mysql_fetch_row($risultato))

      {

         $query="DELETE FROM ".$tbl_prefix."user WHERE id = '$id'";

         $risultato = mysql_query($query) or die("<img src=\"../images/button_cancel.png\"> <span class=\"Stile7\">Errore durante l'esecuzione della query di cancellazione!</span>");

         echo $num_righe['username']."<br>";

non mi da nessun output

con la sessione (di cui ti parlavo sopra):

echo $_SESSION['utente'];

invece vedo stampato il nome

Come mai?

Sarà perchè viene eseguita la query di cancellazione?

risposto 6 anni fa
frankphp
X 0 X

ah, forse mysql_fetch_row crea un array numerato,

prova a fare print_r($num_righe);

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