Requête erronée ?

Fermé
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 - Modifié par FlyAwayExpert7 le 2/08/2015 à 09:44
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 2 août 2015 à 23:58
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

FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
2 août 2015 à 17:13
Personne?

--
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 2/08/2015 à 23:58
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