Rechercher : dans
Par :

Fonction SELECT de MySQL, les champs

Dernière réponse le 20 mai 2009 à 15:01:24 Halifax45, le 14 mai 2009 à 16:49:25 
 Signaler ce message aux modérateurs

Bonjour à tous,

La fonction SELECT de MySQL peut communément être suivie du nom d'un ou plusieurs champs, par exemple "SELECT nom,adresse, etc" ou encore de l'astérisque pour une sélection de tous les champs "SELECT * etc". Jusque là tout va bien. Seulement moi, j'aimerais faire le choix d'un champs en fonction du contenu d'une variable PHP.

Par exemple $var contient 'nom' et j'aimerais faire une recherche du genre "SELECT $var etc". Sauf que cela ne fonctionne pas. J'ai essayé avec apostrophe '$var', guillements "$var", sans, un peu de tout et jusqu'à présent, je n'ai trouvé aucun exemple qui éclaire ma lanterne. D'où ce post.

En somme, dans MySQL, peut-on remplacer le nom d'un champs par une variable qui la contient, juste après la fonction SELECT ?.

Un grand merci pour votre aide.

Halifax

Configuration: Windows XP
Firefox 3.0.10

Meilleures réponses pour « Fonction SELECT de MySQL, les champs » dans :
MySQL - SELECT ... YESTERDAY (hier) VoirIl vous suffit d'utiliser la syntaxe suivante : SELECT * FROM maTable WHERE champ_date = DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 1 DAY) De la même façon pour sélectionner les enregistrements d'avant-hier : SELECT * FROM maTable...
[MySQL] Comment monitorer MySQL en temps réel VoirVous êtes administrateur d'une base de données MySQL et vous souhaitez analyser en temps réel le fonctionnement de MySQL afin de diagnostiquer les éventuels problèmes, suivre la charge de fonctionnement du serveur ? PhpMyAdmin permet de voir les...

1

BiiGiX, le 14 mai 2009 à 17:02:37

Salut,

Voici peut-être une solution :

$variable = 'nom';

$sel = 'SELECT'.$variable.'FROM ma table';
$req = mysql_query($sel);

Répondre à BiiGiX

3

Dr Zoidberg, le 14 mai 2009 à 22:45:42

Juste une petite corrrection, tu as juste oublié les espaces dans la chaine :

$sel = 'SELECT '.$variable.' FROM matable';


Sinon le code SQL généré seradu genre
SELECTchampFROM matable

Répondre à Dr Zoidberg

2

Halifax45, le 14 mai 2009 à 22:40:56

Et bien, j'avoue que vu mon niveau préhistorique en PHP et MySQL, je n'en sais rien. Mais je vais essayer et je reviens après le week end pour ce que ça dit, je n'aurai malheureusement pas trop le temps de tester d'ici là. En tout cas, merci pour la réponse rapide BiiGiX

Répondre à Halifax45

4

Halifax45, le 18 mai 2009 à 22:27:59

Bonsoir à tous,

Merci pour vos interventions. Cela dit, apparemment SQL ne veut pas de cette solution pourtant sympa. La syntaxe par exemple "SELECT nom FROM final" en toutes lettres fonctionne évidement très bien mais le principe de remplacer l'ensemble (y compris les trémas) par une variable ne plaît pas. Si je fais un ECHO $sel; selon l'exemple donné par BiiGix, j'ai bien la même chose qui s'affiche qu'en toutes lettres mais SQL n'est pas d'accord.

Si donc quelqu'un a une idée...

Merci encore

Répondre à Halifax45

5

le père, le 19 mai 2009 à 08:00:03

Bonjour

Si, si, SQL devrait être d'accord, il doit y avoir autre chose qui cloche. Peux-tu montrer ton code ?
SQL ne distingue pas une requête avec variables PHP d'une requête sans variables PHP parce que SQL ne voit JAMAIS les variables PHP, c'est le PHP qui les remplace par leurs valeurs avant de passer la requête à mySQL.
mySQl ne peut matériellement pas faire la différence entre :
mysql_query("SELECT nom FROM final");
et
$variable = "nom";
mysql_query("SELECT ".$variable." FROM final");
ou
$variable = "nom";
$req= "SELECT ".$variable." FROM final";
mysql_query($req);

Répondre à le père

6

Halifax45, le 19 mai 2009 à 22:06:04

Bonsoir le père

Ah? Heureux de le savoir, cela me rassure.

Bon, j'ai pour l'instant une petite table de rien, pour test, que j'ai appelée "final" et venant d'un autre code HTML, la variable $mot1 contient par exemple le mot "bouteille"

Voici le bout de code qui fonctionne:

$req = mysql_query("SELECT bouteille FROM final");
?><br /><?php
while ($donnees = mysql_fetch_array($req) )
{
Echo $donnees[$mot1];?><br /><?php
}



et celui qui plante:

$sel = '"SELECT '.$mot1.' FROM final"'; echo $sel;
$req = mysql_query($sel);
?><br /><?php
while ($donnees = mysql_fetch_array($req) )
{
Echo $donnees[$mot1];?><br /><?php
}



Le message d'erreur est le suivant :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\aaDivers\db PHP\Test\table.php on line 52

Que dire de plus...

Répondre à Halifax45

7

Alain_42, le 19 mai 2009 à 22:54:38

Normal tu as mis des ' en trop dans ta $sel

il faut:

$sel = "SELECT ".$mot1." FROM final"; 

ou  

$sel = "SELECT $mot1 FROM final";

Répondre à Alain_42

8

Halifax45, le 20 mai 2009 à 14:46:54

Bonjour Alain_42,

C'est parfait. Tant qu'à faire, la deuxième option est ma préférée, c'est tout propre comme code. Après coup, ça paraît évident mais bon. Problème résolu en tout cas, je vais pouvoir avancer.

Un grand merci, également aux autres membres qui m'ont répondu auparavent

Halifax

Répondre à Halifax45

9

 le père, le 20 mai 2009 à 15:01:24

Je viens de comprendre ce que tu entendais par (y compris les trémas) et qui m'avait semblé bizarre ! Ce sont les double quotes que tu appelles des trémas !

Répondre à le père