Question sql update

melanie974 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
SchSoftware Messages postés 46 Statut Membre -
Bonjour,
voila mon problème avec la requête UPDATE je sais comment elle fonctionne :

UPDATE Table1
SET Column1 = Value1, Column2 = Value2
WHERE Some_Column = Some_Value

mais comment fait on si :

UPDATE Table1
SET Column1 = Value1, Column2 = Value1
WHERE Some_Column = Some_Value

chez moi rien ne s'affiche.
quelqu'un peut il m'aider s'il vous plait???
A voir également:

3 réponses

SchSoftware Messages postés 46 Statut Membre 3
 
Bonsoir

La requête me semble correcte...

Avez vous fait attention au type des données (si "Column2" est un nombre et "Value1" une chaine de texte, ca risque de bloquer...)

Si Column2 est une chaine de texte:
Avez vous fait attention au espace présent dans Value1 qui DOIT, dans ce cas, être délimiter par des '

Si Column2 est une date
Avez vous fait attention au formatage de Value1

Si chaque valeur de Column2 doit être unique, avez vous fait attention aux doublons

Il faudrait détailler un peu la requête et la structure de la table

Mais si Column1 et Column2 sont des chaines de textes alors
UPDATE Table1
SET Column1 = Value1, Column2 = Value2
WHERE Some_Column = Some_Value

est valide
Mais je vous conseil de l'écrire avec les délimiteurs (une très bonne habitude à prendre...)

UPDATE 'Table1'
SET 'Column1' = 'Value1', 'Column2' = 'Value2'
WHERE 'Some_Column' = 'Some_Value';


Par contre, on ne le vois pas bien là mais les délimiteurs pour les tables et colonnes ne sont pas les même que pour les valeurs
Pour les tables et colonne, c'est celui en dessous du 7 (à coter du "è") du clavier
Pour les valeurs, c'est celui en dessous du 4

Bien à vous
0
melanie974 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   56
 
déjà je tenez a vous remercier vous est le seul a m'avoir répondu.
cependant je n'y arrive toujours pas... regarder :

if($id!=""&&is_numeric($id)&&($chgt=="o"||$chgt=="n")) {
$sql = UPDATE 'factures'SET 'FactActive' = .$chgt. , 'FactEnvoyee' = .$chgt. WHERE 'FactID' = '.$id';
@mysql_query($sql) or die("Erreur SQL:<br />".$sql."<br />".mysql_error());
}

voila ce que j'ai et qui ne marche pas. sa ne veux pas s'afficher. comment faire???
aidez moi encore s'il vous plait.
0
SchSoftware Messages postés 46 Statut Membre 3
 
Bonjours

Si c'est l'exacte copier coller de vôtre code alors je vois plusieurs problèmes... Qui pourrais justifier la non modification...

Votre ligne:
$sql = UPDATE 'factures'SET 'FactActive' = .$chgt. , 'FactEnvoyee' = .$chgt. WHERE 'FactID' = '.$id';

Pour assigner une chaine de texte en PhP, il faut délimiter la dite chaine de texte
- Soit: "Ma chaine de texte" (1)
- Soit: 'Ma chaine de texte' (2)
Ici, la chaine ne commence ni par l'une, ni par l'autre...
Vous aurrez une erreur de type
Parse error: syntax error, unexpected '''

Et si vous souhaitez faire la concaténation de variables alors, chaque une de ces deux méthode a ses règles strictes.

1: Les variable sont présent dans la chaines et sont transformer automatiquement (à utiliser pour les chaines contenant beaucoup de guillemet simple, donc, les requêtes SQL!)

$chgt = 'Active facture'; // pour l'exemple
$id = 1; // pour l'exemple
$sql = "UPDATE 'factures' SET 'FactActive' = '$chgt' , 'FactEnvoyee' = '$chgt' WHERE 'FactID' = '$id';";
$sql vaudra:
UPDATE 'factures'SET 'FactActive' = 'Active facture' , 'FactEnvoyee' = 'Active facture' WHERE 'FactID' = '1';
Notez que les guillemets en gras sont présent dans les deux chaines...

2: (à éviter dans les requêtes SQL d'après moi!)
Les variables présentes dans la chaines ne sont pas transformer, SAUF si vous fermer la chaine en court (donc avec le caractère ') puis que vous utilisiez l'opérateur de concaténation de chaine .

$chgt = 'Active facture'; // pour l'exemple
$id = 1; // pour l'exemple
$sql = 'UPDATE 'factures' SET 'FactActive' = ' . $chgt . ' , 'FactEnvoyee' = ' . $chgt . ' WHERE 'FactID' = '.$id . ';';
$sql vaudra:
UPDATE 'factures' SET 'FactActive' = Active facture , 'FactEnvoyee' = Active facture WHERE 'FactID' = 1;
Notez que les guillemets avant et après les variables ont disparut car il ont été interpréter comme des "fin/début de chaine" (donc la requête va échouer car la chaine de texte contient un caractère d'espacement) il faudrait écrire (pour que les guillemets soient inclus dans la requête final!)
$sql = 'UPDATE 'factures'SET 'FactActive' = \'' . $chgt . '\' , 'FactEnvoyee' = \'' . $chgt . '\' WHERE 'FactID' = \''.$id . '\';';
Plus lourd (en effet, pour que PhP écrive bien UN guillemet dans ce cas, il faut lui indiquer par la présence d'un \ devant le guillemet)

A titre d'exemple, ceci
$sql2 = 'UPDATE 'factures' SET 'FactActive' = $chgt , 'FactEnvoyee' = $chgt WHERE 'FactID' = $id ;';

Donnerais:
UPDATE 'factures' SET 'FactActive' = $chgt , 'FactEnvoyee' = $chgt WHERE 'FactID' = $id ;

Voilà
Beaucoup de blabla, mais je pense que c'est plus important de comprendre que d'avoir la ligne toute faite...

Bien à vous
0