-
Richiamo riga query php
Devo richiamare e stampare dei valori assegnati ad una riga di una tabella.
Io in pratica possiedo il nome di un utente che ha effettuato il login, e devo estrarre dalla tabella gli altri dati, come email e e cognome, da visualizzare sulla sua pagina "profilo".
Normalmente usavo:
Codice:
$sql='SELECT * FROM nome_tabella WHERE nome LIKE $nome';
$result=mysql_query($sql,$db_name);
$cognome=mysql_result($result,$x,"nome");
echo $cognome;
dove $nome e $cognome è il nome e cognome della persona che ha effettuato il login, e $x è una variabile di controllo uguale a 0.
ho provato a sostituire LIKE con = ma nulla cambia. Ho provato a sostituire * con il campo richiesto
Codice:
$sql='SELECT (cognome) FROM nome_tabella WHERE nome LIKE $nome';
Ho provato anche con:
Codice:
$result=mysql_query($sql,$db_name);
$row = mysql_fetch_row($result);
echo $row[0];
ma con scarsi risultati.
Ma adesso non mi spiego perché non mi stampa sullo schermo alcunché... come mai:?::?::?:
grazie in anticipo :lol:
-
Codice PHP:
$sql='SELECT * FROM nome_tabella WHERE nome LIKE $nome';
Racchiudendo la stringa fra apici singoli ( '....' ) le variabili non vengono sostituite, e quindi la tua query
rimane senza un nome da cercare. Usa i doppi apici, e per sicurezza fai l'escape dei valori:
Codice PHP:
$nome = mysql_real_escape_string($nome);
$sql = "SELECT * FROM `nome_tabella` WHERE `nome` LIKE '{$nome}'";
Aiuta a volte stampare le query a schermo, nonchè controllare mysql_error() in caso di errore.
-
Re:
Ho provato anche con quello che mi hai detto...
forse non mi estrae perché il nome ce l'ho fra i cookie:?::?::?:
Codice:
$nome=$_COOKIE['nome_cookie']
$sql = "SELECT * FROM `nome_tabella` WHERE `nome` LIKE '{$nome}'";
ho provato anche a immettere direttamente il coockie, al posto della variabile, ma non capisco perché se chiedo di stampare il cookie me lo fa vedere il nome (cioè il contenuto del cookie), ma se ci estraggo dalla query non mi fa vedere niente...
Codice:
$sql = "SELECT * FROM `nome_tabella` WHERE `nome` LIKE '{$_COOKIE['nome_cookie']}'";
ho provato anche a creare un test sulla tabella e a sostituire il nome manualmente, ma non mi estrae gli altri dati ugualmente...:???:
grazie ancora:lol:
-
Occhio che LIKE è usato per confronti con pattern. Se devi confrontare due nomi direttamente ti basta `nome` = '{$nome}' .
-
Re
Risolto!!!:wink:
Codice PHP:
$query = "SELECT * FROM nome_tabella WHERE nome='$nome'";
$result = mysql_query($query) or die(mysql_error());
//entra nel while solo se esiste una riga
while($riga = mysql_fetch_array($result)){
$nome = stripslashes($riga['nome']);
$cognome = stripslashes($riga['cognome']);
$anni = stripslashes($riga['anni']);
echo($nome." ".$cognome." ".$anni."<br/>");
Il problema non era tanto nella selezione della query ma nella richiesta di stampa:incavolat
grazie della disponibilità:razz:
-
Di niente.
C'è un motivo particolare per tutti quegli stripslashes?
-
devono raccogliere l'informazione... se c'è un modo per abbreviare ben venga:lol: magari se me lo posti :wink:
grazie ancora:razz:
-
Non so cosa voglia dire "devono raccogliere l'informazione"... stripslashes rimuove gli slash che proteggono alcuni caratteri speciali in una stringa; ma a meno che tu non li abbia aggiunti due volte, non ci dovrebbero essere slash di troppo nel database.