2009-11-20 11 views
11

Nel tentativo di selezionare la colonna titolo da una particolare rigaselezionare e eco un singolo campo da DB MySQL utilizzando PHP

$eventid = $_GET['id']; 
$field = $_GET['field']; 
$result = mysql_query("SELECT $field FROM `events` WHERE `id` = '$eventid' "); 
echo $result; 

tutto quello che ottiene è Resource id #19

Come devo fare questo? Qual è il metodo migliore?

risposta

9
$eventid = $_GET['id']; 
$field = $_GET['field']; 
$result = mysql_query("SELECT $field FROM `events` WHERE `id` = '$eventid' "); 
$row = mysql_fetch_array($result); 
echo $row[$field]; 

ma fai attenzione all'iniezione di sql perché stai utilizzando $ _GET direttamente in una query. Il pericolo di iniezione è particolarmente grave perché non esiste una funzione di database per sfuggire agli identificatori. Invece, è necessario passare il campo attraverso una whitelist o (meglio ancora) utilizzare un nome diverso esternamente rispetto al nome della colonna e mappare i nomi esterni ai nomi delle colonne. Nomi esterni non validi comportano un errore.

+3

Oppure utilizzare istruzioni preparate per evitare SQL Injection. Nota: mysql_query viene deprecato, utilizzare invece mysqli o PDO. –

+0

@TimoHuovinen +1 [collegamento ufficiale deprecato mysql_query] (http://www.php.net/manual/en/function.mysql-query.php) –

14

Prova questa:

echo mysql_result($result, 0); 

Questo è sufficiente perché si sta solo il recupero di una campo di una riga.

+0

dice contare parametro non valido – mrpatg

+2

'mysql_result ($ risultato, 0)' per la prima (e solo) riga. – jensgram

+0

Vero. Lo ha modificato. Ma non dovrebbe funzionare normalmente per la prima riga se non lo dichiaro esplicitamente. – Franz

1

E sfuggi ai tuoi valori con mysql_real_escape_string dato che PHP6 non lo farà più per te! :)

Problemi correlati