hai messo il nome del campo tra virgolette, di conseguenza la query ti viene
select 'campo' from iscritti where ecc.
invece devi fare
select campo from iscritti where ecc.
consiglio: hai scritto un sacco di query inutili
in effetti non capisco perchè debba prima fare la query, poi se non esiste alcun dato (suppongo che id sia primary key, quindi non ci possono essere dati doppi) e stavi cercando l'email, va a cercare il nick
chiaramente se non ci sono righe con id = $id prima non ci sono neanche dopo (a meno di un caso fortuito per cui la riga viene scritta in quel mezzo secondo che intercorre tra le due query)
di conseguenza riscrivi il codice così:
Codice PHP:
function dato($campo,$id) {
global $mysql_connection;
if($campo == 'nick') {
$campo = 'email';
}
$dato = mysql_query("select ".$campo." from iscritti where id = ".$id." ;",$mysql_connection);
$num_rows = mysql_num_rows($dato);
if($num_rows > 0) {
$valore = mysql_fetch_row($dato);
return $valore[0];
}
return false;
}
indicazioni stilistiche:
1) è sempre bene usare la variabile di connessione, piuttosto che l'ultima connessione usata, caso mai avessi in futuro bisogno di due connessioni (magari a due db diversi)
2) mysql_fetch_row e mysql_fetch_assoc sono più efficenti di mysql_fetch_array quando si usa un solo metodo di accesso ai dati (array numerico o associativo)