Question sql update
melanie974
Messages postés
52
Date d'inscription
Statut
Membre
Dernière intervention
-
SchSoftware Messages postés 46 Statut Membre -
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???
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:
- Question sql update
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Windows update windows 10 - Guide
- Wsus offline update - Télécharger - Systèmes d'exploitation
3 réponses
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
est valide
Mais je vous conseil de l'écrire avec les délimiteurs (une très bonne habitude à prendre...)
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
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
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.
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.
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
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