Requête erronée ?

FlyAwayExpert7 Messages postés 82 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Cela fait quelques heures que je cherche cette (sûrement) bête erreur:

Dans le même fichier j'ai 2 requêtes SQL:

$connexion = new PDO(sprintf('mysql:host=%s;dbname=%s', $serveur, $base), $user, $mdp);          
$insertadd_on = $connexion->prepare('INSERT INTO '.$prefixe.'plugins SET nom=:nom, desc=:desc, version=:version, etat=:etat, rep=:rep, index=:index') or die(print_r($connexion->errorInfo(), true));
$insertadd_on->execute(array(
  'nom' => $zip_name,
  'desc' => $manifest_fgc['manifest']['content_description'],
  'version' => $manifest_fgc['manifest']['content_version'],
  'etat' => "1",
  'rep' => $manifest_fgc['manifest']['content_name'],
  'index' => $manifest_fgc['manifest']['fr_content_file_index_name']
));


Et juste après j'en ai une deuxième qui fonctionne:

$connexion2 = new PDO(sprintf('mysql:host=%s;dbname=%s', $serveur, $base), $user, $mdp);
$insertadd_on_tab = $connexion2->prepare('INSERT INTO '.$prefixe.'tab SET nom=:nom, target=:target') or die(print_r($connexion2->errorInfo(), true));
$insertadd_on_tab->execute(array(
  'nom' => $manifest_fgc['manifest']['content_name'],
  'target' => './Add-ons/'.$manifest_fgc['manifest']['content_name']
));


PS: Toutes mes variables sont définies et fonctionnent.

Que faire?

D'avance merci.

Cordialement,

FlyAwayExpert7

-----------------------------------------------
Conception web · Développement web · Design graphique par passion.

2 réponses

  1. FlyAwayExpert7 Messages postés 82 Statut Membre 3
     
    Personne?

    --
    0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Desc est un mot clé réservé par Mysql ( c'est celui qui sert à définir dans quel ordre tu TRI le résultat de tes requêtes SELECT .... combiné à ORDER BY. )

    Donc ... change le nom de tom champ en "description" afin d'"éviter les soucis.

    NB : En PDO .. on n'utilise pas le OR DIE( .... ) ... mais des blocs TRY / CACTH pour gérer les erreurs.

    Nb2 : Il est également préférable de séparer la requête de son exécution... ainsi ... tu peux en faire un ECHO en cas de besoin.
    => Idem avec les variables dans l'execute.

    
    try{
       $sql = "INSERT INTO ".$prefixe."plugins 
              SET nom=:nom
                 , description=:desc
                 , version=:version
                 , etat=:etat
                 , rep=:rep
                 , index=:index";
    
       $params = array(
              ':nom' => $zip_name,
              ':desc' => $manifest_fgc['manifest']['content_description'],
              ':version' => $manifest_fgc['manifest']['content_version'],
              ':etat' => "1",
              ':rep' => $manifest_fgc['manifest']['content_name'],
              ':index' => $manifest_fgc['manifest']['fr_content_file_index_name']
              );
        
       $insertadd_on = $connexion->prepare($sql);
       $insertadd_on->execute($params);
      
     }catch(Exception $e) {
       // En cas d'erreur dans la requête 
       echo "<pre><br>".$e->getMessage()."<br>";
       echo "<br> Requete : ".$sql;
       echo "<br> Params : <br>";
       print_r($params);
       echo "</pre>";
      }
    


    Cordialement,
    Jordane
    0