Re: mysql INSERT : problème

Page principale

Répondre à ce message
Auteur: Bruno Vernay
Date:  
À: anne.guilde@free.fr
CC: ML Guilde
Sujet: Re: mysql INSERT : problème
Bonjour,
Il est parfois rentable d'utiliser un http://www.phpframeworks.com/
pour s'abstraire des spécificités (voir des bizarreries) du RDBM.
(Zend, Cake ou Symphony de tête pour les plus connus).
Ca permet aussi peut être de se protéger automatiquement des attaques
par SQL injection. (A verifier)

J'ai bien dit *parfois* rentable.

Bruno


2009/11/16 anne.guilde@??? <anne.guilde@???>:
> 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
>
>




--
Bruno VERNAY