Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème INSERT INTO (WAMP)

Sujet résolu
16 mars 2018 à 16:28:11

Bonjour à tous,

Petit soucis en suivant le tuto sur le php, je n'arrive pas à trouver où se trouve le problème au niveau des requêtes INSERT qui ne fonctionnent pas.

Le code :

<?php


try {
		$con = new PDO('mysql:host=localhost;dbname=cardgenerator;charset=utf8', 'root', '');
	}
		catch (Exception $e)
		{
				die('Erreur: '.$e->getMessage());
		}

	
if (isset($_POST['Valider'])){
	
	$con->exec ("INSERT INTO jeux VALUES ( 'aaa','aa','')");
	

	
}
J'ai donc une base nommée "cardgenerator", dans laquelle se trouvent 3 tables dont "jeux". Lorsque, sur un autre script, j'interroge cette table, il me retourne bien les données correspondantes mais ici lorsque je souhaite insérer rien ne fonctionne (et aucun message d'erreur). J'ai bien vérifié les privilèges de l'utilisateur dans la bdd; on dirait tout simplement que le script s'exécute bien mais sans entrer quoi que ce soit dans la base... Ca fait deux jours que je cherche quelle erreur j'ai pu faire, que j'écris et réécris le code pour être sûr de ne pas faire de faute en recopiant... Mais rien, j'espérais donc que quelqu'un pourrait identifier l'éventuel erreur que je n'ai pas remarqué...

-
Edité par A_Romulus 16 mars 2018 à 17:36:05

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
16 mars 2018 à 16:32:19

salut

utilises plutot $con->query("INSERT INTO jeux VALUES ( 'aaa','aa','')");

et assure toi que ta table jeux ne contient donc que 3 colonnes

sinon tu devras faire

$con->query("INSERT INTO jeux(colonne1, colonne2, colonne3) VALUES ( 'aaa','aa','')");

-
Edité par Anonyme 16 mars 2018 à 16:48:10

  • Partager sur Facebook
  • Partager sur Twitter
16 mars 2018 à 16:42:07

Bonjour,$

Surtout pour commencer affiche les erreurs PDO. Pourquoi s'embêter à chercher des heures dans le vide !

$con = new PDO('mysql:host=localhost;dbname=cardgenerator;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));



  • Partager sur Facebook
  • Partager sur Twitter
16 mars 2018 à 17:31:23

Alors merci pour votre réactivité pour commencer ^^

Henmatt : j'avais déjà essayé cette instruction (j'en ai testé une paire déjà ahah) et je suis bien certain que ma table ne contient que trois colonnes (Name, GameID et GameDBID) dont la troisième est en Auto-Increment. J'ai également déjà essayé en nommant chaque colonne dans la ligne mais ça ne change rien...

Philodick: j'ai testé ta modif et comme je m'y attendais aucune erreur à déclarer... Ce qui est logique puisque j'utilise la même ligne de code sur une autre page pour faire un SELECT (qui lui fonctionne correctement). J'ai nettoyé le code mais au fil de mes tentatives j'avais ajouté les commandes pour qu'il m'indique les erreurs mais visiblement il n'en trouvait aucune...

On dirait simplement que tout fonctionne mais que rien ne s'écrit dans la BDD; pourtant comme je disais j'ai bien vérifié les privilèges, je ne vois pas où ça coince...

-
Edité par A_Romulus 16 mars 2018 à 17:35:24

  • Partager sur Facebook
  • Partager sur Twitter
16 mars 2018 à 18:02:10

Salut !

SI jamais, activer l'affichage des erreurs de PDO sans demander à PHP d'afficher les erreurs en général ne sert à rien  ;)

Si vraiment tous les affichages sont activés et qu'il n'y a absolument aucune erreur, c'est que la condition pour effectuer l'insertion n'est pas vraie. A toi de trouver pour quelle raison exactement (coquile, casse, méthode d'envoi, etc.), ou alors montre-nous ton formulaire.

@henmatt11 : c'est correct d'utiliser exec ici. query est prévu pour les requêtes retournant des jeux de résultats, comme SELECT.

  • Partager sur Facebook
  • Partager sur Twitter
16 mars 2018 à 18:59:23

Tu as raison Ymox, mais c'est quand même rare que les erreurs Php ne soient pas activées avec Wamp. Mis si le isset n'est pas vérifié, alors évidemment... facile à vérifier alors.
  • Partager sur Facebook
  • Partager sur Twitter
16 mars 2018 à 19:18:44

Bonjour,

Tu nous dit que les 3 colonnes dans la table jeux sont Name, GameID et GameDBID.

Je vois que tu passes 2 string dans ta requête, est ce que les types sont bien respectés?

Par exemple, GameId est surement un integer et non une string.

  • Partager sur Facebook
  • Partager sur Twitter
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
17 mars 2018 à 12:30:18

Ymox : "c'est que la condition pour effectuer l'insertion n'est pas vraie."
Ben ma condition est d'appuyer sur le bouton "valider" et je suis bien envoyé sur la page cible quand je clique donc j'imagine qu'il n'y a pas de problème à ce niveau..

Sur cet exemple j'ai enlevé l'affichage d'erreurs car lorsqu'il y était ça ne changeais rien (pas d'insertion dans la bdd mais aucun message d'erreur affiché).

Eclairia: Name et GameID sont des varchar (GameID est une abréviation entrée par l'utilisateur), GameDBID est un Int auto-incrémenté dans la bdd donc les types sont bien respectés (enfin d'après moi)...

Vous voyez pourquoi je coince, j'ai déjà vérifié ces détails et pourtant ça ne fonctionne toujours pas.
A priori tout est bon, et ce qui est vraiment étrange c'est que si je fais un SELECT ça fonctionne...

Y aurait pas un réglage particulier pour wamp qui pourrait poser ce genre de problème ?

-
Edité par A_Romulus 17 mars 2018 à 12:33:31

  • Partager sur Facebook
  • Partager sur Twitter
17 mars 2018 à 12:40:31

Fais un var_dump() de $_POST['Valider'] avec un die() derrière.

Si le var_dump ne s'affiche pas alors la condition n'est pas bonne.

Si tu es dans ce cas là, donne nous ton formulaire HTML stp.

  • Partager sur Facebook
  • Partager sur Twitter
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
17 mars 2018 à 12:44:15

Bonjour,

Puisque "GameDBID" est un int auto-incrémenté par la bdd alors on ne le renseigne pas lors de l'insert. C'est la bdd qui va le gérer lors de la création de la ligne. Du coup il y aura seulement deux champs à renseigner comme te la montré "henmatt11"

  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2018 à 8:59:39

A_Romulus a écrit:

Ymox : "c'est que la condition pour effectuer l'insertion n'est pas vraie." Ben ma condition est d'appuyer sur le bouton "valider" et je suis bien envoyé sur la page cible quand je clique donc j'imagine qu'il n'y a pas de problème à ce niveau..

Vérifie quand-même. C'est quand on imagine qu'il n'y a pas de problème qu'il peut y en avoir.

A_Romulus a écrit:

Sur cet exemple j'ai enlevé l'affichage d'erreurs car lorsqu'il y était ça ne changeais rien (pas d'insertion dans la bdd mais aucun message d'erreur affiché).

Afficher les erreurs ne va pas changer le comportement, mais devrait justement t'aider à le comprendre. Quitte à me répéter, si vraiment avec tous les messages d'erreurs demandés à être affichés, il n'y en a aucun, le souci vient de ta condition.
Sinon, comment peut-il ne pas y avoir d'erreur ni au niveau de la condition, ni au niveau du code, mais que ça ne fasse pas ce à quoi tu t'attends ?

-
Edité par Ymox 19 mars 2018 à 8:59:49

  • Partager sur Facebook
  • Partager sur Twitter
19 mars 2018 à 9:32:02

Salut A_romulus...

dans ton if, fais toi un ptit echo "cay parti mon kikiiiiii"; (attention, les mots choisis sont très importants!! :p)

Ils ont tous raison au dessus, tu dois garder les affichages d'erreurs actifs tant que t'es pas en prod, tu gagnes du temps! d'autre part le fait de tester la logique de ton code (moi je le fais avec des echo ) ça va te faciliter la vie.

Là si ton echo ne s'affiche pas, ben c'est que ta condition n'est pas bonne, et c'est de ce coté là du périph que tu chercheras, sinon t'en reviens à ton problème d'insert et tu pourras afiner ta reflexion. 

  • Partager sur Facebook
  • Partager sur Twitter
20 mars 2018 à 16:11:36

OK... Alors d'un coté jsuis rassuré parce que ma logique n'était pas bancale et il n'y avait pas de soucis avec ma condition d'un autre je me sens débile parce que je crois qu'on est sur de l'erreur élémentaire bien plus débile que ça ^^

J'avais juste mis l'instruction sur la même page que le formulaire au lieu de le mettre sur la page cible... (Remarquez comme j'suis un gros noob ça peut peut-être marcher mais en tout cas en ayant juste changé tout ça de page ça fonctionne !) J'ai dû louper une ligne du tuto...

Du coup je ne sais pas si le problème venait vraiment de là mais en tout cas ça fonctionne maintenant; merci de votre temps et certainement à bientot (malheureusement pour vous ahah) !
  • Partager sur Facebook
  • Partager sur Twitter
19 octobre 2021 à 14:05:44

Depuis 2jours ,je n'arrive pas à inserer les données dans la table users de la bdd registrations  php mysql sous wampserver 5.0.2 .Pourtant les autres commandes fonctionnent update,select etc,... Je vous suggère que j'ai changé la machine du coup j'ai exporté la bdd dans le meme utilitaire(wampserver 5.0.2 plus amélioré  que celui de l'ancien machine .
  • Partager sur Facebook
  • Partager sur Twitter
19 octobre 2021 à 15:37:12

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL