Requete sql ORDER BY et GET
niicoos
-
avion-f16 Messages postés 20367 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 20367 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
voici la partie de code qui pose probleme:
<?
if (isset($_GET['ordre']))
{
echo $_GET['ordre'];
$reponse = $bdd->prepare('SELECT * FROM map ORDER BY ? ');
$reponse ->execute(array($_GET['ordre']));
}
else
......
ce que j'envoi par get s'affiche bien avec "echo", mais la requete sql ne semble pas le prendre.
si je remplace le "?" avec le parametre que j'envoi par l'url cela fonctionne.
Je deviens dingue le code me semble bon mais quelque chose doit forcement clocher,
j'ai testé d'autre requete qu'ORDER comme WHERE ggg=? et cela fonctionne.
Ou est cette erreur?
voici la partie de code qui pose probleme:
<?
if (isset($_GET['ordre']))
{
echo $_GET['ordre'];
$reponse = $bdd->prepare('SELECT * FROM map ORDER BY ? ');
$reponse ->execute(array($_GET['ordre']));
}
else
......
ce que j'envoi par get s'affiche bien avec "echo", mais la requete sql ne semble pas le prendre.
si je remplace le "?" avec le parametre que j'envoi par l'url cela fonctionne.
Je deviens dingue le code me semble bon mais quelque chose doit forcement clocher,
j'ai testé d'autre requete qu'ORDER comme WHERE ggg=? et cela fonctionne.
Ou est cette erreur?
A voir également:
- Requete sql ORDER BY et GET
- Get data back - Télécharger - Récupération de données
- Message bounced by administrator - Forum Mail
- "Wmic path softwarelicensingservice get oa3xoriginalproductkey" - Forum Windows
- Photos liked by ne fonctionne plus ✓ - Forum Facebook
- Wmic path softwarelicensingservice get oa3xoriginalproductkey - Forum Windows Vista
2 réponses
Salut.
Quand tu exécutes la requête avec la méthode PDOStatement::execute, les "?" sont remplacées par la variables passée. Par défaut, PDO ajoute automatiquemetn des guillemets autour de la valeur, ce qui donne donc :
Je pense que tu as remarqué l'erreur.
Je te propose de faire comme ceci :
Quand tu exécutes la requête avec la méthode PDOStatement::execute, les "?" sont remplacées par la variables passée. Par défaut, PDO ajoute automatiquemetn des guillemets autour de la valeur, ce qui donne donc :
SELECT * FROM map ORDER BY "champ"
Je pense que tu as remarqué l'erreur.
Je te propose de faire comme ceci :
<?php
$champsAutorises = array('champ1','champ2','champ3');
if(isset($_GET['ordre']) && in_array($_GET['ordre'], $champsAutorises)) {
$sql = 'SELECT * FROM table ORDER BY '.$_GET['ordre'];
$reponse = $bdd->query($sql);
/* ... */
} else {
/* ... */
}Dans l'array $champsAutorises, il suffit de mettre les champs pour lesquels tu autorises un "ORDER BY".