Re: mysql INSERT : problème

Page principale

Répondre à ce message
Auteur: anne.guilde@free.fr
Date:  
À: anne.guilde
CC: ML Guilde
Sujet: Re: mysql INSERT : problème
anne.guilde@??? a écrit :
> anne-guilde-free a écrit :
>> anne.guilde@??? a écrit :
>>> Bonjour,
>>>
>>> Je liste un certain nombre de ligne que j'affiche, je fais l'insert
>>> dans mysql, puis je réaffiche tous les champs que j'ai insérés.
>>>
>>> -----------
>>> echo "<b> Package : </b>".$i." <b> Nom : </b>".$o1."<b> en cours
>>> d'ajout </b>--- \n";
>>>
>>> mysql_query(" INSERT INTO donne_am VALUES
>>> ('$a1','$e1','$b1','$c1','$d1','$f1','$i1','$g1','$h1','$o1','$p1','$q1','$j1','$k1','$l1')
>>> ");
>>> # mysql_query("INSERT INTO donne_am VALUES
>>> ('$a1','$e1','$b1','$c1','$d1','$f1','$i1','$g1','$h1','$o1','$p1','$q1','$j1','$k1','$l1')
>>> ON DUPLICATE KEY UPDATE ");
>>>
>>> echo "<b> Package : </b>".$k." <b> - </b>".$a1." <b> - </b>".$e1."
>>> <b> - </b>".$b1." <b> - </b>".$c1." <b> - </b>".$d1." <b> -
>>> </b>".$f1." <b> - </b>".$i1." <b> - </b>".$g1." <b> - </b>".$h1." <b>
>>> - </b>".$o1." <b> - </b>".$p1." <b> - </b>".$q1." <b> - </b>".$j1."
>>> <b> - </b>".$k1." <b> - </b>".$l1."<b> - </b>--- \n";
>>> --------------
>>> $o1 correspond à la clé unique
>>>
>>> 1)
>>> sur les 155 lus, je n'en ai que 130 dans la table
>>> il y a donc des lignes qui ne sont pas insérées
>>> comment avoir un message quand pas d'insertion?
>>>
>>> j'ai farfouillé dans les logs => rien
>>
>> opération réussie pour le point 1
>> Ce sont tous les enregs qui ont un champ qui contient une apostrophe
>> qui ne sont pas insérés
>>
>> --------------
>> $a1 = mysql_real_escape_string($a1);
>> ...
>> $q1 = mysql_real_escape_string($q1);
>>
>> $query = " INSERT INTO donne_am VALUES
>> ('$a1','$e1','$b1','$c1','$d1','$f1','$i1','$g1','$h1','$o1','$p1','$q1','$j1','$k1','$l1'
>> ) ";
>>
>> $result = mysql_query($query);
>> --------------
>>
>> dans $result, si blanc pas d'insertion, si '1' enreg inséré
>>
>>>
>>> 2)
>>> la deuxième ligne de mysql que j'ai commenté :
>>> Je voulais mettre à jour si enreg existant et insérer si inexistant
>>> => marche pas.
>>>
>>
>> Pour l'instant, pas trouvé
>
> Trouvé avec replace
>
> $query = " REPLACE INTO donne_am
> (name,arch,epoch,ver,rel,summary,description,packager,url,href,summaryfr,descriptionfr,versionsme,problemes,solutions)
> VALUES
> ('$a1','$e1','$b1','$c1','$d1','$f1','$i1','$g1','$h1','$o1','$p1','$q1','$j1','$k1','$l1'
> ) ";
>
> Si existe, cela met à jour (si j'ai bien compris delete+insert)
> Si inexistant, cela crée l'enreg
>


touvé aussi avec ON DUPLICATE KEY UPDATE

$query = " INSERT INTO donne_am
(name,arch,epoch,ver,rel,summary,description,packager,url,href,summaryfr,descriptionfr,versionsme,problemes,solutions)
VALUES
('$a1','$e1','$b1','$c1','$d1','$f1','$i1','$g1','$h1','$o1','$p1','$q1','$j1','$k1','$l1'
) ON DUPLICATE KEY UPDATE summary='$f1', description='$i1',
packager='$g1', url='$h1', summaryfr='$p1', descriptionfr='$q1',
versionsme='$j1', problemes='$k1', solutions='$l1' ";

il faut séparer chaque champ par une virgule, pas de parenthèse, ....

beaucoup joué au Bourgeois gentilhomme pour avoir la bonne syntaxe

Je garde ON DUPLICATE KEY UPDATE dans mon script

Anne