Probleme requete sql
Résolu/Fermé
BanBan55
Messages postés
363
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
9 juin 2024
-
Modifié par jordane45 le 17/02/2015 à 01:26
BanBan55 Messages postés 363 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 9 juin 2024 - 19 févr. 2015 à 12:30
BanBan55 Messages postés 363 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 9 juin 2024 - 19 févr. 2015 à 12:30
A voir également:
- Probleme requete sql
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Logiciel sql - Télécharger - Bases de données
- Sql server recovery - Télécharger - Gestion de données
- Sql replace plusieurs valeurs - Forum Programmation
4 réponses
Utilisateur anonyme
16 févr. 2015 à 23:10
16 févr. 2015 à 23:10
J'avoue que je ne vois pas.
Le message "Enregistrement réussi" s'affiche-t-il ?
S'il n'y a pas d'affichage d'erreur ni de succès, provoque volontairement une erreur (genre faute de frappe : $success = $insert->execute(array( 'image_cal'=> ) pour t'assurer que l'erreur est bien affichée.
Le message "Enregistrement réussi" s'affiche-t-il ?
S'il n'y a pas d'affichage d'erreur ni de succès, provoque volontairement une erreur (genre faute de frappe : $success = $insert->execute(array( 'image_cal'=> ) pour t'assurer que l'erreur est bien affichée.
Utilisateur anonyme
14 févr. 2015 à 18:01
14 févr. 2015 à 18:01
Bonjour
Il n'y a a priori pas d'erreur dans ta requête, bien que je n'aime pas les INSERT faits sans nommer explicitement les champs.
As-tu un message d'erreur ?
Es-tu sûr du format de test données, je pense aux dates en particulier ? Si tu utilises MySQL, c'es aaaa-mm-jj pour un type DATE.
As-tu ajouté un
Et enfin, comment t'assures-tu que les données sont ajoutées ou non ?
Il n'y a a priori pas d'erreur dans ta requête, bien que je n'aime pas les INSERT faits sans nommer explicitement les champs.
As-tu un message d'erreur ?
Es-tu sûr du format de test données, je pense aux dates en particulier ? Si tu utilises MySQL, c'es aaaa-mm-jj pour un type DATE.
As-tu ajouté un
var_dump($insert);au début du try pour t'assurer que tu y passes bien, et que les données sont correctes ?
Et enfin, comment t'assures-tu que les données sont ajoutées ou non ?
BanBan55
Messages postés
363
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
9 juin 2024
45
14 févr. 2015 à 22:41
14 févr. 2015 à 22:41
aucun message d'erreur. Petite precision, mon code fonctionne tres bien en local mais pas en distant sur le serveur.
j'ai fait un essai avec var_dump, aucun probleme avec les données. date au bon format...
je me connecte à PHPmyAdmin pour voir si les données sont ajoutées à ma table mais il n'y a rien. Uniquement le fichier de l'upload qui fonctionne.
C'est bizarre.
J'ajoute que ma version de PHP avec MAMP est la 5.5.14
et la version php de mon hebergeur (celeonet) est la version 5.4
j'ai fait un essai avec var_dump, aucun probleme avec les données. date au bon format...
je me connecte à PHPmyAdmin pour voir si les données sont ajoutées à ma table mais il n'y a rien. Uniquement le fichier de l'upload qui fonctionne.
C'est bizarre.
J'ajoute que ma version de PHP avec MAMP est la 5.5.14
et la version php de mon hebergeur (celeonet) est la version 5.4
Utilisateur anonyme
Modifié par le père. le 14/02/2015 à 23:53
Modifié par le père. le 14/02/2015 à 23:53
Qu'est-ce que ça veut dire "Uniquement le fichier de l'upload qui fonctionne." ?
Peux-tu mettre une copie du var_dump ($insert ); mis au début du try, et une copie de la structure de la base (capture d'écran de phpmyadmin déposée sur cjoint.com, ou fichier sql d'exportation de la structure) ?
[edit] La structure de la table calendrier suffira.
Peux-tu mettre une copie du var_dump ($insert ); mis au début du try, et une copie de la structure de la base (capture d'écran de phpmyadmin déposée sur cjoint.com, ou fichier sql d'exportation de la structure) ?
[edit] La structure de la table calendrier suffira.
BanBan55
Messages postés
363
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
9 juin 2024
45
16 févr. 2015 à 18:09
16 févr. 2015 à 18:09
voila le resultat du var_dump($insert)
voici la stucture de ma table SQL
https://www.cjoint.com/?3BqstHUgknE
object(PDOStatement)#3 (1) { ["queryString"]=> string(182) "INSERT INTO calendrier VALUES( NULL, :image_calendrier, :titre_calendrier, :contenu_calendrier, :date_debut_calendrier, :date_fin_calendrier, :contact_calendrier, :url_calendrier)" }
voici la stucture de ma table SQL
https://www.cjoint.com/?3BqstHUgknE
jordane45
Messages postés
38347
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 décembre 2024
4 719
Modifié par jordane45 le 17/02/2015 à 01:43
Modifié par jordane45 le 17/02/2015 à 01:43
Bonjour,
Déjà.. je te conseille de recupérer les variables de type POST/GET/FILE... AVANT de les utiliser ..
Ensuite, fais des echo/print/var_dump des différentes variables pour voir si cela correspond à tes attentes...
Quelque chose du genre:
Cordialement,
Jordane
Déjà.. je te conseille de recupérer les variables de type POST/GET/FILE... AVANT de les utiliser ..
Ensuite, fais des echo/print/var_dump des différentes variables pour voir si cela correspond à tes attentes...
Quelque chose du genre:
// création de l'evenement dans la base de données $sql = "INSERT INTO calendrier VALUES( NULL, :image_calendrier, :titre_calendrier, :contenu_calendrier, :date_debut_calendrier, :date_fin_calendrier, :contact_calendrier, :url_calendrier)"; $filename = isset($_FILES['affiche_event']['name'])? $_FILES['affiche_event']['name']:''; $params =array( 'image_calendrier'=>$filename, 'titre_calendrier'=> $titre, 'contenu_calendrier'=> $contenu, 'date_debut_calendrier'=> $date_debut, 'date_fin_calendrier'=> $date_fin, 'contact_calendrier'=> $email, 'url_calendrier'=> $url ); try { // On envois la requète $insert->execute($params); $lastId = $insert->lastInsertId(); if($lastId){ echo "Enregistrement réussi <br> ID :".$lastId; }else{ echo "<pre>"; echo '-- REQUETE :<br> '.$sql; echo '-- PARAMS :<br>'; print_r($params ); echo "</pre>"; } } catch( Exception $e ){ echo 'Erreur de requète : ', $e->getMessage(); }
Cordialement,
Jordane
BanBan55
Messages postés
363
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
9 juin 2024
45
17 févr. 2015 à 08:19
17 févr. 2015 à 08:19
Merci, je vais faire un essai ce soir.
C'est vraiment étrange quand même car j'ai le problème uniquement en distant (chez mon hébergeur) et quand je teste en local tout fonctionne très bien.
C'est vraiment étrange quand même car j'ai le problème uniquement en distant (chez mon hébergeur) et quand je teste en local tout fonctionne très bien.
Bonjour Jordane
$lastId = $insert->lastInsertId();
if($lastId){
À quoi bon ce test ? S'il y a eu une erreur, elle a dû être capturée par le catch et de plus BanBan55 teste déjà le résultat du execute dans sa variable $success.
echo '-- REQUETE :<br> '.$sql;
$sql est une chaîne littérale sans aucune variable, qui n'a subi aucun traitement, il n'y a rien à apprendre de cet echo là.
$lastId = $insert->lastInsertId();
if($lastId){
À quoi bon ce test ? S'il y a eu une erreur, elle a dû être capturée par le catch et de plus BanBan55 teste déjà le résultat du execute dans sa variable $success.
echo '-- REQUETE :<br> '.$sql;
$sql est une chaîne littérale sans aucune variable, qui n'a subi aucun traitement, il n'y a rien à apprendre de cet echo là.
BanBan55
Messages postés
363
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
9 juin 2024
45
17 févr. 2015 à 08:30
17 févr. 2015 à 08:30
Je viens de faire un essai avec votre code, j'obtiens un erreur 500 en retour.
jordane45
Messages postés
38347
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 décembre 2024
4 719
>
BanBan55
Messages postés
363
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
9 juin 2024
17 févr. 2015 à 08:44
17 févr. 2015 à 08:44
Oupsss..j'ai oublié le PREPARE
jordane45
Messages postés
38347
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 décembre 2024
4 719
>
jordane45
Messages postés
38347
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 décembre 2024
17 févr. 2015 à 12:04
17 févr. 2015 à 12:04
$insert = $connection->prepare( $sql); // Et pour le Last ID $lastId = $connection->lastInsertId();
17 févr. 2015 à 08:21
18 févr. 2015 à 08:42
Pensez vous que le probleme peut venir de mon hébergeur( version php et mysql ) ?
18 févr. 2015 à 10:23
Pourquoi ne réponds-tu pas à la question "Le message "Enregistrement réussi" s'affiche-t-il ?"
As-tu fait un print_r ($params) pour voir ce que tu es supposé enregistrer ?
As-tu fait l'essai de provoquer une erreur pour t'assurer que le try.. catch fonctionne bien ?.
Tu ne comprends pas l'intérêt de ce qu'on te demande ?
18 févr. 2015 à 12:42
Modifié par le père. le 18/02/2015 à 15:08
Si ça marche en local et pas en distant, ça peut être une histoire de vasse (majuscules/minuscules : ta table s'appelle-t-elle bien "calendrier" tout en minuscules ?
[Edit] après lecture de la doc et essais, PDO est silencieux par défaut sur les erreurs. Il faut ajouter juste après la connexion pour voir à coup sûr les erreurs sur les requêtes. Comme je l'ai intégré dans ma fonction de connexion il y a plusieurs années, j'avais complètement oublié ça.