Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de syntaxe MYSQL sous LAMP

Fonctionne sous WAMP mais pas sous LAMP

    13 février 2024 à 9:38:12

    Bonjour à tous,

    je développe un programme et il fonctionne très bien avec WAMP sous Windows 10. Je souhaite basculer sous Ubuntu. J'ai installé LAMP, importé la BDD, copier les fichiers et là ... c'est le drame :

    Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OF = NULL, BR = NULL, DHDebut = NULL' at line 2 in /var/www/html/pages/acceuil.php:44 Stack trace: #0 /var/www/html/pages/acceuil.php(44): PDOStatement->execute() #1 /var/www/html/index.php(48): require_once('...') #2 {main} thrown in/var/www/html/pages/acceuil.phpon line44

    Pourtant je n'ai rien changé au code :

    // PTRO
        $sqlQuery = 'SELECT Clef_Collaborateur, Nom, Prenom FROM collaborateur';
        $collaboStatement = $mysqlClientPTRO->prepare($sqlQuery);
        $collaboStatement->execute();
        $collabo = $collaboStatement->fetchALL();
        // On réinitialise toutes les colonnes OF, BR et Temps
        $varNull = NULL;
        $sqlQuery = 'UPDATE collaborateur 
                     SET OF = :OF, BR = :BR, DHDebut = :DHDebut';
        $brEnCoursStatement = $mysqlClientPTRO->prepare($sqlQuery);
        $brEnCoursStatement->execute([
            'OF' => $varNull,
            'BR' => $varNull,
            'DHDebut' => $varNull
            ]);

    Merci d'avance

    -
    Edité par Lutine MP Power 13 février 2024 à 11:58:29

    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2024 à 11:09:24 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée


      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        13 février 2024 à 11:12:41

        Bonjour. Vérifie (le plus simple est par phpMyAdmin) que dans ta nouvelle base de données la colonne accepte les null.
        • Partager sur Facebook
        • Partager sur Twitter
          13 février 2024 à 12:02:06

          Bonjour,

          J'ai modifier le titre en conséquence.

          Pour répondre @Domi65, ca ne vient pas du NULL (vu que ca fonctionne sous WAMP et plus LAMP).

          J'ai galéré à trouver, mais voici la réponse (je la partage car c'est vraiment subtile et il fallait trouver) :

          SOUS WAMP :

          // PTRO
              $sqlQuery = 'SELECT Clef_Collaborateur, Nom, Prenom FROM collaborateur';
              $collaboStatement = $mysqlClientPTRO->prepare($sqlQuery);
              $collaboStatement->execute();
              $collabo = $collaboStatement->fetchALL();
              // On réinitialise toutes les colonnes OF, BR et Temps
              $sqlQuery = 'UPDATE collaborateur
                           SET OF = :OF, BR = :BR, DHDebut = :DHDebut';
              $brEnCoursStatement = $mysqlClientPTRO->prepare($sqlQuery);
              $brEnCoursStatement->execute([
                  'OF' => $varNull,
                  'BR' => $varNull,
                  'DHDebut' => $varNull
                  ]);

          SOUS LAMP :

          // PTRO
              $sqlQuery = 'SELECT Clef_Collaborateur, Nom, Prenom FROM collaborateur';
              $collaboStatement = $mysqlClientPTRO->prepare($sqlQuery);
              $collaboStatement->execute();
              $collabo = $collaboStatement->fetchALL();
              // On réinitialise toutes les colonnes OF, BR et Temps
              $sqlQuery = 'UPDATE `collaborateur` 
                           SET `OF` = :OF,
                               `BR` = :BR,
                               `DHDebut` = :DHDebut';
              $collaboStatement = $mysqlClientPTRO->prepare($sqlQuery);
              $collaboStatement->execute(['OF' => NULL,
                                          'BR' => NULL,
                                          'DHDebut' => NULL,]);





          -
          Edité par Lutine MP Power 13 février 2024 à 12:02:41

          • Partager sur Facebook
          • Partager sur Twitter
            13 février 2024 à 14:51:51

            > OF (R); added in 8.0.1 (reserved)

            C'est surtout que tu n'as pas la même version de MySQL entre les 2 environnements.

            => of est devenu un mot-clef réservé depuis MySQL 8.0.1, pour qu'il perde ce caractère il faut l'entourer de backticks (`) mais il serait préférable à long terme de renommer la colonne parce que la prochaine fois que tu n'en mets pas, ça plantera de la même façon.

            -
            Edité par julp 13 février 2024 à 15:16:36

            • Partager sur Facebook
            • Partager sur Twitter
              13 février 2024 à 15:15:35

              julp a écrit:

              > OF (R); added in 8.0.1 (reserved)

              C'est surtout que tu n'as pas la même version de MySQL entre les 2 environnements.

              => of est devenu un mot-clef depuis MySQL 8.0.1, pour qu'il perde ce caractère il faut l'entourer de backticks (`) mais il serait préférable à long terme de renommer la colonne parce que la prochaine fois que tu n'en mets pas, ça plantera de la même façon.

              -
              Edité par julp il y a 18 minutes

              Merci beaucoup, il fallait le savoir, je te remercie de cette infos, je vais modifier le soft en conséquence.

              • Partager sur Facebook
              • Partager sur Twitter

              Erreur de syntaxe MYSQL sous LAMP

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown