Rechercher : dans
Par :

Mettre une variable dans un requète sql

Dernière réponse le 4 mar 2009 à 16:47:44 robinou59, le 4 mar 2009 à 11:50:52 
 Signaler ce message aux modérateurs

Bonjour,
Voila j'ai un pb avec un requête sql,
voila mon bout de code :
mysql_query("UPDATE base SET $nbr='$ex' WHERE id='$id'");
Voila ma question je sais que $ex et $îd sont OK mais est ce que j'ai le droit de mettre la variable $nbr comme je l'ai mise la
Merci pour vos réponse

Configuration: Windows Vista
Firefox 3.0.6

1

NookZ, le 4 mar 2009 à 11:53:25

Non car elle ne sera pas prise en compte car vous avez oublié la concaténation :

mysql_query("UPDATE base SET ".$nbr."='".$ex."' WHERE id='".$id."'");

Répondre à NookZ

2

Robinou59, le 4 mar 2009 à 15:31:50

Merci de votre reponse mais cela ne marche toujours pas

Répondre à Robinou59

3

le père, le 4 mar 2009 à 15:48:10

Bonjour

Si, tu avais tout à fait le droit. Il n'y a aucune concaténation à faire, tu peux utiliser un nom de variable directement à l'intérieur d'une chaîne entre " ", c'est un des principes de base du PHP.
Mais pour que mysql_query l'accepte, il faut que ça donne une requête valable, c'est à dire entre autres que $nbr soit un nom de champ.

Peux tu faire
mysql_query("UPDATE base SET $nbr='$ex' WHERE id='$id'") or die (mysql_error());
Pour récupérer un message d'erreur ?

Répondre à le père

5

NookZ, le 4 mar 2009 à 15:53:38

Encore un truc que je ne savais pas ^^
Le pire c'est que je l'avais déjà utilisé héhéhé, j'ai une super mémoire...

Répondre à NookZ

4

robinou5959, le 4 mar 2009 à 15:49:29

Je l'ai fait mais il ne me sort aucun erreur
merci de votre reponse
Par contre je vien de pensée a une chose ma variable et un chiffre eske j'ai le droit de mettre un chiffre a cette endroit de la requète

Répondre à robinou5959

6

le père, le 4 mar 2009 à 16:06:29

Non, tu n'as pas droit à un chiffre à cet endroit. Ça voudrait dire quoi, SET 3='toto' ?

Répondre à le père

7

robinou5959, le 4 mar 2009 à 16:07:28

Le champ dans ma table s'appelle 1

Répondre à robinou5959

8

jona303, le 4 mar 2009 à 16:13:32

Alors
$nbr=(string)$nbr; ?? Chuck Norris n'utilise pas de navigateur. Il lit le code sou­rce et imagine la page.
Question de gain de temps...

Répondre à jona303

9

robinou5959, le 4 mar 2009 à 16:14:38

Dsl je ne comprend pas

Répondre à robinou5959

10

jona303, le 4 mar 2009 à 16:16:05

Tu castes ta variable (tu lui dit que c'est un String),
sinon plus simple
$temp=$nbr.'';
mysql_query("UPDATE base SET $temp='$ex' WHERE id='$id'"); Chuck Norris n'utilise pas de navigateur. Il lit le code source et imagine la page.
Question de gain de temps...

Répondre à jona303

11

le père, le 4 mar 2009 à 16:17:50
  • +1

Si tu as eu l'idée biscornue de donner un nombre comme nom de champ, il faut le mettre entre accents graves pour que mysql ne le prenne pas pour un nombre
mysql_query("UPDATE base SET `$nbr`='$ex' WHERE id='$id'")

Personnellement je mets systématiquement les noms de tables et de champs entre accents graves. Tu peux essayer aussi d'appeler un champ avec un mot réservé du mysql pour voir ce que ça donne.

Répondre à le père

12

robinou5959, le 4 mar 2009 à 16:19:14

Merci pour tt vos solution je vais essayé

Répondre à robinou5959

13

jona303, le 4 mar 2009 à 16:19:41

:), c'est vrai que c'est biscornu,.. Chuck Norris n'utilise pas de navigateur. Il lit le code sou­rce et imagine la page.
Question de gain de temps...

Répondre à jona303

14

robinou5959, le 4 mar 2009 à 16:35:05

C'est biscornu mais sa marche merci a tous après 4h de galère sa marche merci a tous et a ccm

Répondre à robinou5959

15

 le père, le 4 mar 2009 à 16:47:44

Mais si ça n'avait pas été biscornu, il n'aurait pas fallu 4h ! ;-)
Bon courage pour la suite

Répondre à le père