2009-11-20 4 views

Répondre

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]; 

mais attention à l'injection SQL car vous utilisez $ _GET directement dans une requête. Le danger d'injection est particulièrement mauvais car il n'y a pas de fonction de base de données pour échapper les identifiants. Au lieu de cela, vous devez passer le champ à travers une liste blanche ou (mieux encore) utiliser un nom différent en dehors du nom de la colonne et mapper les noms externes aux noms de colonnes. Les noms externes non valides entraîneraient une erreur.

+3

Ou utilisez des instructions préparées pour éviter l'injection SQL. Note: mysql_query est obsolète, utilisez plutôt mysqli ou PDO. –

+0

@TimoHuovinen +1 [mysql_query obsolète lien officiel] (http://www.php.net/manual/fr/fonction.mysql-query.php) –

14

Essayez ceci:

echo mysql_result($result, 0); 

Cela suffit parce que vous ne récupérez un champ d'une ligne.

+0

dit paramètre compte – mrpatg

+2

invalide 'mysql_result ($ result, 0)' pour la première (et seulement) rangée. – jensgram

+0

True. Edité. Mais cela ne devrait pas fonctionner normalement pour la première rangée si je ne l'énonce pas explicitement. – Franz

1

Et échappez à vos valeurs avec mysql_real_escape_string puisque PHP6 ne le fera plus pour vous! :)

Questions connexes