erreurs mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : erreurs mysql

par Truc » 09 oct. 2005, 21:29

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

par Invité » 09 oct. 2005, 21:22

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

par Truc » 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 

par Invité » 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.

par Truc » 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])) ? ", " : ") , ");
    }
}

par Invité » 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.

par Invité » 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.

par Cyrano » 08 oct. 2005, 14:03

Impossible je ne crois pas, mais pourquoi faire plusieurs requêtes où une seule suffit ?

par Invité » 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?

par Cyrano » 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);

par Invité » 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]

par Invité » 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 ";" ?

par Invité » 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

par Truc » 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

par Cyrano » 08 oct. 2005, 13:38

Ouais, j'ai viré le double. Bon, tu vas faire une chose:
echo("<p>". $requete ."</p>\n");
Récupère ce que ça affiche et colle nous ça ici si tu ne vois pas l'erreur toi-même avant.

À priori, ça se passe au niveau des requêtes d'insertion à modifier comme ceci:
//.....
    $requete .= "INSERT INTO ".$table." VALUES ('". $k ."','";
    while(isset($ligne[$i]))
    {
        $requete .= "'".mysql_escape_string(trim($ligne[$i]))."'";
        $i++;
        $requete .= ((isset($ligne[$i])) ? ", " : "); ");
    }