PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-02-2014 16:34:06

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Bonjour,

J'ai un problème que je ne parviens pas à résoudre. Ma requête d'insert génère 2 lignes dans la table.
Une première correcte puis, juste en dessous, une seconde ligne vide. L'incrémentation se fait normalement.
Je bosse en local avec la dernière version d'Easy Php.
Est-ce un bug de Myadmin?


Merci d'avance.

Hors ligne

#2 27-02-2014 20:05:37

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Bonjour,

Encore une fois, tout comme on viens de le dire à Djinn, notre boule de cristal est en panne sans autre renseignement (Show create table+ code insert), ainsi que le moteur de la base utilisé (innoDB, MyIsam) sous MySQL.
La précision de ma réponse se limitera donc à la précision des informations fournies. Je pense que vous êtes sous innoDB et que votre deuxième insert à fait l'objet d'un rollback, dont la cause peut être variée mais vu que visiblement la raison ne peut provenir de la valeur de la clé primaire, je pencherais pour un doublon sur un index unique au sein de la ligne insérée ou un contrôle d'intégrité référentielle non conforme.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 27-02-2014 21:03:47

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

vous avez entièrement raison!

voilà les infos:
requête création et le résultat


CREATE TABLE `avocats` (
`id` INT( 20 ) NOT NULL AUTO_INCREMENT ,
`nom` VARCHAR( 255 ) NOT NULL ,
`prenom` LONGTEXT NOT NULL ,
`competence` LONGTEXT NOT NULL ,
`adresse1` VARCHAR( 100 ) NOT NULL ,
`adresse2` VARCHAR( 100 ) NOT NULL ,
`adresse3` VARCHAR( 100 ) NOT NULL ,
`code` VARCHAR( 100 ) NOT NULL ,
`ville` VARCHAR( 100 ) NOT NULL ,
`tel` VARCHAR( 100 ) NOT NULL ,
`fax` VARCHAR( 100 ) NOT NULL ,
`mail` VARCHAR( 100 ) NOT NULL ,
`web` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ;
 

alt


bonne soirée

Hors ligne

#4 28-02-2014 04:09:13

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Bonjour,

Merci mais vous nous avez fourni 2 fois la même information^^. Votre code d'insertion en 2e aurait été préférable pour vous aider.
A bientôt donc.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 28-02-2014 07:40:51

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Bonjour,

on va y arriver! heureusement que je poste sur un forum débutants smile

Voilà le résultat de la requête "Show create table" et au cas où, le php.

CREATE TABLE `avocats` (
 `id` int(20) NOT NULL AUTO_INCREMENT,
 `nom` varchar(255) NOT NULL,
 `prenom` longtext NOT NULL,
 `competence` longtext NOT NULL,
 `adresse1` varchar(100) NOT NULL,
 `adresse2` varchar(100) NOT NULL,
 `adresse3` varchar(100) NOT NULL,
 `code` varchar(100) NOT NULL,
 `ville` varchar(100) NOT NULL,
 `tel` varchar(100) NOT NULL,
 `fax` varchar(100) NOT NULL,
 `mail` varchar(100) NOT NULL,
 `web` varchar(100) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1
 

Le PHP


 $sql = "INSERT INTO avocats (nom,prenom,competence,adresse1,adresse2,adresse3,code,ville,tel,fax,mail,web) VALUES ('$nom','$prenom','$competence','$adresse1','$adresse2','$adresse3','$code','$ville','$tel','$fax','$mail','$web')";
 

Hors ligne

#6 28-02-2014 16:42:46

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Saluton,

Et comment la requête est-elle soumise par PHP à MySQL ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 28-02-2014 18:16:29

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Re-bonjour!

Je viens de répondre dans la fenêtre précédente!


$sql = "INSERT INTO avocats (nom,prenom,competence,adresse1,adresse2,adresse3,code,ville,tel,fax,mail,web) VALUES ('$nom','$prenom','$competence','$adresse1','$adresse2','$adresse3','$code','$ville','$tel','$fax','$mail','$web')";
         
 //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;

 

Plomodiern? j'avais un ami Breton de Plomodiern. Yann Yourn Nicolas

Hors ligne

#8 28-02-2014 22:51:59

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Je ne vois rien dans tout cela qui soit susceptible d'expliquer l'insertion dans la table d'une ligne vide en supplément de la ligne de data.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 28-02-2014 23:46:52

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

O_o

Je fini par être grave moi aussi j'avais pas "compris" que la ligne était insérée mais vide, mais plutôt que l'insertion était annulée.
Une raison qui pourrait expliquer cela, c'est que les paramètres de la requête sont issus d'un formulaire et que la page de traitement est redemandée sans que les données soient repostées en $_GET ou $_POST.
De toute manière ne voit pas assez de code pour pouvoir faire un diagnostic certain.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#10 01-03-2014 07:17:20

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Bonjour,

Je vous livre le script traitement complet.
Parelellement , je vais tester en ligne, j'ai l'impression que Easyphp déconne un peu ou alors c'est moi qui ne vois plus rien à force d'essayer.

J'ai ce message sur ma requête d'insert.

33495207293You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'adresse','20000','ajaccio','33495207293','','','')' at line 1

la requête:

$sql = "INSERT INTO avocats (nom, prenom, competence, adresse_1, adresse_2, adresse_3, code, ville, tel, fax, email, web) VALUES('$nom','$prenom','$competence','$adresse_1','$adresse_2','$adresse_3','$code','$ville','$tel','$fax','$email','$web')";

<?php
$str=NULL;
$str = str_replace("\n\n","\n",$str);
try
{
  // Connexion MySQL
  $bdd = new PDO('mysql:host=localhost;dbname=annuaire', 'root', '');
}
catch(Exception $e)
{
  // En cas d'erreur.
        die('Erreur : '.$e->getMessage());
}

// On récupère tout le contenu de la table avocats
$reponse = $bdd->query("SELECT * FROM avocats WHERE nom= '". $_GET['nom']."'");

//affichage
while ($donnees = $reponse->fetch())
{

 

Dernière modification par kayorn (01-03-2014 07:37:43)

Hors ligne

#11 01-03-2014 09:00:38

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Mysql : la requête INSERT crée 2 entrées au lieu d'une seule

Saluton,

Le message d'erreur tend à orienter vers le fait que l'un (ou plusieurs)  des champs du formulaire contiendrai(en)t une apostrophe.

auquel cas addslashes() sera ton amie.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums