INSERT INTO ne marche pas

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 : INSERT INTO ne marche pas

par Invité » 07 nov. 2005, 02:00

On peut voir le code php utilisé pour l'insertion au juste ? Si on sait que le problème ne vient pas de la requête, alors le problème est ailleurs.

Code : Tout sélectionner

<?php include("config.php"); ?> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="PHP"> <TITLE>Consultations à la MMG</TITLE> </HEAD> <BODY> <?php $db=mysql_connect($host, $login, $pwd); if(!$db){ print "erreur de connexion $db<br>"; exit; } $sql="INSERT INTO `MMG` (`maison` , `medecin` , `jour` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) VALUES ('MMG14', 'lui', '2005-10-10', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé');"; echo "<BR>sql=".$sql; $sql="SELECT * FROM MMG ORDER BY jour;";
Et le config.php

Code : Tout sélectionner

<? $host='*****'; $base='*****'; $login='*****'; $pwd='*****'; ?>
(les étoiles correspondent aux vraies valeurs)
Le select fonctionne, mais pas le insert.

Normalement, à chaque lancement de la page, je devrais voir une nouvelle s'ajouter à la BDD.

Toujours aucun signe de vie...

Merci d'avance

Gérard

par Cyrano » 05 nov. 2005, 22:44

On peut voir le code php utilisé pour l'insertion au juste ? Si on sait que le problème ne vient pas de la requête, alors le problème est ailleurs.

par Invité » 05 nov. 2005, 22:37

Ça m'a pris trente seconde et phpMyAdmin pour trouver l'erreur :

Code : Tout sélectionner

INSERT INTO `MMG` ( `maison` , `medecin` , `jour` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) VALUES ( 'MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' )
Et non

Code : Tout sélectionner

INSERT INTO `MMG` ( `maison` , `medecin` , `date` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) VALUES ( 'MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' )
Je te laisse le soin de trouver la différence, elle est flagrante, d'autant plus que j'avais déjà soulevé le problème.
Si tu fais allusion à jour/date, j'aurais pu faire l'erreur (personne n'est parfait !), mais non.

J'ai synchronisé les modifications de la table et de la requête.

Merci quand même.

J'ai vraiment l'impression que le problème vient plus d'un problème dans la page php que dans la requête elle-même(si elle marche dans phpmyadmin, elle devrait marcher ailleurs, et si les requêtes d'interrogation fonctionnent, les requêtes d'insertion devraient fonctionner aussi ?).

Il me semble avoir eu une histoire avec une page qui commençait comme il ne fallait pas, ou un truc comme ça.

par Cyrano » 05 nov. 2005, 18:01

Ça m'a pris trente seconde et phpMyAdmin pour trouver l'erreur :

Code : Tout sélectionner

INSERT INTO `MMG` ( `maison` , `medecin` , `jour` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) VALUES ( 'MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' )
Et non

Code : Tout sélectionner

INSERT INTO `MMG` ( `maison` , `medecin` , `date` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) VALUES ( 'MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' )
Je te laisse le soin de trouver la différence, elle est flagrante, d'autant plus que j'avais déjà soulevé le problème.

par Invité » 05 nov. 2005, 17:40

Pour qu'on puisse t'aider, peux-tu sortir le SQL qui permet de créer tes tables (on pourra créer les mêmes sur nos serveurs locaux) et ainsi tester ta requête.

Code : Tout sélectionner

CREATE TABLE MMG ( id int(11) NOT NULL auto_increment, maison varchar(10) default 'MMG14', medecin varchar(20) default NULL, jour date default '0000-00-00', heure time default '00:00:00', patient varchar(40) default NULL, adresse varchar(80) default NULL, origine varchar(50) default NULL, diagnostic varchar(200) default NULL, destination varchar(50) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM;

par Invité » 05 nov. 2005, 17:39

En ce qui concerne ton id, si tu veux que MySQL le gère tout seul, il te suffit de ne pas le placer dans la liste de champs à remplir
$sql1="INSERT INTO `MMG` (`maison` , `medecin` , `date` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) 
VALUES ('MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' 
);"; 
Merci du tuyau, mais ce n'est pas mieux.

par Cyrano » 05 nov. 2005, 12:26

Je signale au passage qu'en SQL, "date" est un mot réservé. Pour éviter ce genre de problème, il est bon de préfixer le nom des champs. Par exemple, dans une table "MMG", on mettra les champs mmg_id, mmg_date, etc.... et là on ne risque aucun conflit.

par zeus » 05 nov. 2005, 11:41

En ce qui concerne ton id, si tu veux que MySQL le gère tout seul, il te suffit de ne pas le placer dans la liste de champs à remplir
$sql1="INSERT INTO `MMG` (`maison` , `medecin` , `date` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) 
VALUES ('MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' 
);"; 

par mere-teresa » 05 nov. 2005, 11:37

Pour qu'on puisse t'aider, peux-tu sortir le SQL qui permet de créer tes tables (on pourra créer les mêmes sur nos serveurs locaux) et ainsi tester ta requête.

Re: INSERT INTO ne marche pas

par Gédé » 05 nov. 2005, 02:08

Des nouvelles du front :
Bonjour !

J'utilise une base sur online.net sur laquelle j'ai plusieurs tables où j'effectue plusieurs requêtes avec des scripts PHP et que j'administre avec phpMyAdmin.

Je suis coincé avec un INSERT qui ne fait rien (pas de message d'erreur), alors que le SELECT fonctionne.

La table

id int(11) Non auto_increment
maison varchar(10) Oui MMG14
medecin varchar(20) Oui NULL
date date Oui 0000-00-00
heure time Oui 00:00:00
patient varchar(40) Non
adresse varchar(80) Non
origine varchar(50) Oui NULL
diagnostic varchar(200) Non
destination varchar(50) Oui NULL

J'ai supprimé toutes les valeurs non nulles. Tous les champs peuvent maintenant être nuls, sauf la clé principale id.


Le code fautif :
$sql1="INSERT INTO `MMG` ( `id` , `maison` , `medecin` , `date` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` )
VALUES (
NULL, 'MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé'
);";
J'ai simplifié comme ça :

Code : Tout sélectionner

$sql="INSERT INTO MMG VALUES ('')";
Pas mieux.

par Invité » 05 nov. 2005, 01:52

De plus, tu mets NULL dans le champ 'id' qui n'a pas l'air d'accepter les NULL (tu as coché NOT NULL ?) et de plus ce n'est pas conseillé :).
Et à quoi correspondent les Oui/Non dans la table (j'ai pas PHPMyAdmin sur moi )
Ça coince aussi avec ''.
Mais des requêtes similaires marchent avec NULL.

Oui Non correspond aux champs nuls.

par mere-teresa » 04 nov. 2005, 16:25

$sql1="INSERT INTO MMG ( id , maison , medecin , date_consultation , heure , patient , adresse , origine , diagnostic , destination ) VALUES (35, 'MMG14', 'lui', '2005-11-04', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' );";

par Invité » 04 nov. 2005, 16:09

Code : Tout sélectionner

$sql1="INSERT INTO `MMG` ( `id` , `maison` , `medecin` , `date` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) VALUES ( NULL, 'MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' );";

Code : Tout sélectionner

date date Oui 0000-00-00
Tu intègres "azerty" dans un champs date (0000-00-00) ?
Je précise bien que c'était pour test?. Normalement, ça devrait générer une erreur, et ça ne fait rien.
Quand je mets une date normale, ça ne marche pas mieux.
Null pour un champs auto-incrémenté ?
--> Il va y avoir comme un souci je pense.
Quand je mets '', ça ne fait pas mieux.
:!: Evites de mettre un nom "date" à un champs date, ça pourrait prêter à confusion plus tard.
Bonne idée.
:arrow:

Code : Tout sélectionner

$sql1="INSERT INTO MMG ( id , maison , medecin , date , heure , patient , adresse , origine , diagnostic , destination ) VALUES ( '', 'MMG14', 'lui', '2005-11-04', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' );";

par mere-teresa » 04 nov. 2005, 12:13

De plus, tu mets NULL dans le champ 'id' qui n'a pas l'air d'accepter les NULL (tu as coché NOT NULL ?) et de plus ce n'est pas conseillé :).
Et à quoi correspondent les Oui/Non dans la table (j'ai pas PHPMyAdmin sur moi )

par charabia » 04 nov. 2005, 12:09

Code : Tout sélectionner

$sql1="INSERT INTO `MMG` ( `id` , `maison` , `medecin` , `date` , `heure` , `patient` , `adresse` , `origine` , `diagnostic` , `destination` ) VALUES ( NULL, 'MMG14', 'lui', 'azerty', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' );";

Code : Tout sélectionner

date date Oui 0000-00-00
Tu intègres "azerty" dans un champs date (0000-00-00) ?
Null pour un champs auto-incrémenté ?
--> Il va y avoir comme un souci je pense.

:!: Evites de mettre un nom "date" à un champs date, ça pourrait prêter à confusion plus tard.

:arrow:

Code : Tout sélectionner

$sql1="INSERT INTO MMG ( id , maison , medecin , date , heure , patient , adresse , origine , diagnostic , destination ) VALUES ( '', 'MMG14', 'lui', '2005-11-04', '11:00:00', 'Bellepaire', 'Loches', 'RTL', 'Grosse tête', 'Hospitalisé' );";