erreurs mysql

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 oct. 2005, 13:43

enfaite tu fait plusieurs INSERT dans l'exécution...
mysql_query(INSERT ... ; INSERT );
pas possible il me semble, tu dois mettre dans la boucle l'exécution et le faire pour chaque requete

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

08 oct. 2005, 13:47

avec ta solution, le résultat est

Code : Tout sélectionner

INSERT INTO occasions VALUES ('1',[b]''prau[/b]', 'PRESTIGE AUTOMOBILES', '', 'ORLEANS', '31782', '2004', '10/08/2004', 'VP', 'FIAT', 'Panda 1.3 JTD70 Multijet 16v Class', 'MFT5112EN550', 'CI', 'GO', '4', '4', '43210', 'Réels', 'JAUNE VANILL', '0', 'N', '12 mois pièces et main d\'oeuvre', 'PITHIVIERS', 'Anti-blocage des roues|Coussins gonflables|Direction assistée|Vitres électr. et fermeture centralisée|Radio CD');
mais j'ai un message erreur de syntaxe près de prau, en gras dans le code

Invité
Invité n'ayant pas de compte PHPfrance

08 oct. 2005, 13:49

enfaite tu fait plusieurs INSERT dans l'exécution...
PHP:
mysql_query(INSERT ... ; INSERT );

pas possible il me semble, tu dois mettre dans la boucle l'exécution et le faire pour chaque requete
dans ce cas pourquoi phpmyadmin accepte plusieurs insert à la suite, séparés par un ";" ?

Invité
Invité n'ayant pas de compte PHPfrance

08 oct. 2005, 13:53

pour cyrano, je réaffiche le résulat, avec l'erreur de syntaxe
INSERT INTO occasions VALUES ('1',''prau', 'PRESTIGE AUTOMOBILES', '', 'ORLEANS', '31782', '2004', '10/08/2004', 'VP', 'FIAT', 'Panda 1.3 JTD70 Multijet 16v Class', 'MFT5112EN550', 'CI', 'GO', '4', '4', '43210', 'Réels', 'JAUNE VANILL', '0', 'N', '12 mois pièces et main d\'oeuvre', 'PITHIVIERS', 'Anti-blocage des roues|Coussins gonflables|Direction assistée|Vitres électr. et fermeture centralisée|Radio CD');
le guillemet avant prau n'a pas la bonne forme, mais je ne sais pas où corriger ça.[/b]

Mammouth du PHP | 19672 Messages

08 oct. 2005, 13:54

Tu pourrais faire toutes les insertions en une seule requête, ce que fait du reste PHPMyAdmin quand tu passes par les formulaires d'insertion:

Code : Tout sélectionner

INSERT INTO table (champ1, champ2, ..., champn) VALUES (val11, val12, ..., val1n), (val21, val22, ..., val2n), (val31, val32, ..., val3n);
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

08 oct. 2005, 14:00

ça veut dire que c'est impossible de faire plusieurs insert d'affilée dans une variable contenant une requete?

Mammouth du PHP | 19672 Messages

08 oct. 2005, 14:03

Impossible je ne crois pas, mais pourquoi faire plusieurs requêtes où une seule suffit ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

08 oct. 2005, 14:07

ben là t'as raison...mais c'est juste frustrant de ne pas comprendre d'ou vient l'erreur de syntaxe.

Invité
Invité n'ayant pas de compte PHPfrance

08 oct. 2005, 14:13

peux tu m'aider à modifier la requête pour faire toutes les insertions en une fois? je bloque un peu.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 oct. 2005, 15:17

Je ne pense pas qu'il faut changer grand chose pour que ça marche, essai comme ça:
//initialisation de la requete
$requete = "INSERT INTO ".$table."  VALUES"; // a placer avant cette boucle
foreach($lignes as $ligne)
{

... //ici tu gardes tout le code que tu as mis

//remplacement de la boucle
$requete .=" (". $k .",'";
    while(isset($ligne[$i]))
    {
        $requete .= "'".mysql_escape_string(trim($ligne[$i]))."'";
        $i++;
        $requete .= ((isset($ligne[$i])) ? ", " : ") , ");
    }
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

09 oct. 2005, 21:13

merci, c'est ça qu'il me faut.
mais je croisqu'il y a un petit pb à la fin de la requete.
Elle donne ceci quand on l'affiche
INSERT INTO table VALUES(.....) , (.....) , (.....) ,
Il faudrait qu'a la fin la virgule ne soit pas ajoutée mais je ne vois pas comment faire.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 oct. 2005, 21:17

comme ceci ça devrai aller (pas tres beau, mais ça marche :wink: )
$requete = substr($requete,0,strlen($requete)-2);// a pour effet de supprimer la dernière virgule générée dans la boucle 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

09 oct. 2005, 21:22

super, tout est en ordre. merci beaucoup pour votre aide. :D

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 oct. 2005, 21:29

pour un modo
un pti [résolu] :P

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute