Question sql update

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???

3 réponses

  1. 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
    1. 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.
      1. 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