Mysqli ON DUPLICATE KEY UPDATE syntax error

Résolu
Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   -  
Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Dans la table Announcements j'ai créé un index unique comme combinaison de 2 autres index (announcement_id et user_id).
Je ne parviens pas à trouver où est l'erreur de syntaxe dans cette ligne

mysqli_query($db,"INSERT INTO Announcements (`announcement_id`, `user_id`)
VALUES ('$AnnounceID','$UserID')
ON DUPLICATE KEY UPDATE user_id = ".$UserID);	// Ne pas ajouter de record s'il existe déjà

Merci d'avance pour votre aide
Windows / Chrome 127.0.0.0

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    dans ce cas-là, il est utile de faire:

    $sqlstr="INSERT INTO Announcements (`announcement_id`, `user_id`)
    VALUES ('$AnnounceID','$UserID')
    ON DUPLICATE KEY UPDATE user_id = ".$UserID);
    echo $sqlstr;
    mysqli_query($db,$sqlstr);

    Cela te permet d"obtenir le contenu exact du texte de la requête, et de la tester en phpmyadmin.

    0
    1. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
       

      Bonne idée, merci : il y avait un quote !

      J'ai ajouté mysqli_real_escape_string : ça fonctionne.

      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    Pourquoi utiliser ainsi deux approches différentes pour les deux insertions de la même variable dans la requête?

    0
    1. Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention   11
       

      Pour ne pas avoir de doublon.

      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Herve_be Messages postés 1182 Date d'inscription   Statut Membre Dernière intervention  
         

        Pourquoi, une fois, insérer la variable dans la chaîne, et, une seconde fois, en concaténer le contenu?

        0