UPDATE ... WHERE..pb de validité du contenu de la variable
Résolu/Fermé
danielos77
Messages postés
108
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
16 janvier 2024
-
12 avril 2020 à 04:53
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 12 avril 2020 à 21:08
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 12 avril 2020 à 21:08
A voir également:
- UPDATE ... WHERE..pb de validité du contenu de la variable
- Windows update 0x80070643 - Accueil - Windows
- Word a trouvé du contenu illisible - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
2 réponses
jordane45
Messages postés
38310
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
12 avril 2020 à 14:02
12 avril 2020 à 14:02
Bonjour,
Pour afficher les array, les objets, les class ... ce n'est pas print qu'il faut utiliser... mais print_r
Quoi qu'il en soit, ton code serait mieux ainsi :
Pour afficher les array, les objets, les class ... ce n'est pas print qu'il faut utiliser... mais print_r
Quoi qu'il en soit, ton code serait mieux ainsi :
$sql = "UPDATE Stages SET Validation = :decis WHERE NumStage = :NumStage"; try{ $sth = $bdd->prepare($sql); $sth->bindParam(':decis', $Validation, PDO::PARAM_STR); $sth->bindParam(':NumStage', $NumStage, PDO::PARAM_INT); $result = $sth->execute(); }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } echo " <br>Résultat de l'update : " . print_r($result,true);
danielos77
Messages postés
108
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
16 janvier 2024
2
12 avril 2020 à 05:21
12 avril 2020 à 05:21
ça fonctionne après avoir apporté les corrections suivantes :
- Mettre la variable du WHERE avec des guillemets
ensuite il y avait toujours une erreur mais "plus petite" (avec moins de lignes ;-)) qui était :
Catchable fatal error: Object of class PDOStatement could not be converted to string in /var/www/sda/0/e/..../Ddevalidation.php on line 192
corrigée tout simplement en mettant la ligne concernée en commentaire
Bon, pour les puristes ce ne doit pas être la meilleure solution, mais ça marche. Il n'y a plus d'erreur et l'update est bien fait dans la table.
Ceci étant, je suis preneur de toute proposition qui serait plus conventionnelle ou d'explications sur pourquoi l'objet de la classe ne peut être convertie en chaine de caractères et/ou pourquoi l'execute de l'array($Validation) ne pouvait pas aller.
Daniel
--
- Mettre la variable du WHERE avec des guillemets
//$sth appartient ↓a classe PDOStatement $sth = $bdd->prepare("UPDATE Stages SET Validation = :decis WHERE NumStage = '$NumStage'"); $sth->bindParam(':decis', $Validation, PDO::PARAM_STR); $sth->execute();
ensuite il y avait toujours une erreur mais "plus petite" (avec moins de lignes ;-)) qui était :
Catchable fatal error: Object of class PDOStatement could not be converted to string in /var/www/sda/0/e/..../Ddevalidation.php on line 192
corrigée tout simplement en mettant la ligne concernée en commentaire
// print "<br>$sth<br>";
Bon, pour les puristes ce ne doit pas être la meilleure solution, mais ça marche. Il n'y a plus d'erreur et l'update est bien fait dans la table.
Ceci étant, je suis preneur de toute proposition qui serait plus conventionnelle ou d'explications sur pourquoi l'objet de la classe ne peut être convertie en chaine de caractères et/ou pourquoi l'execute de l'array($Validation) ne pouvait pas aller.
Daniel
--
yg_be
Messages postés
23343
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 551
12 avril 2020 à 12:55
12 avril 2020 à 12:55
bonjour, de quoi souhaites-tu faire print?
pourquoi n'utilises-tu pas le bindParam pour tes deux paramètres variables?
pourquoi n'utilises-tu pas le bindParam pour tes deux paramètres variables?
danielos77
Messages postés
108
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
16 janvier 2024
2
>
yg_be
Messages postés
23343
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
12 avril 2020 à 21:06
12 avril 2020 à 21:06
Bonjour yg_be,
C'était juste pour voir la requête exécutée. pour le cas où la valeur n'arriverait pas sur la table . Mais en fait, certainement que la gestion des erreurs avec PDO me l'aurait dit tout simplement.
Sinon, c'est juste un echo qui se fait lorsque tout s'est bien déroulé.
Pourquoi, je n'ai pas utilisé le bindParam pour les 2 variables ? Cela ne m'est pas venu à l'esprit car pour moi, il n'y avait que la variable de décision à envoyer.... l'autre ($NumStage) étant déjà dans la table, elle ne sert qu'à caler l'endroit où la valeur de la variable ($Validation) doit être mise.
Merci pour l'intérêt porté à mon soucis maintenant résolu.
Daniel
C'était juste pour voir la requête exécutée. pour le cas où la valeur n'arriverait pas sur la table . Mais en fait, certainement que la gestion des erreurs avec PDO me l'aurait dit tout simplement.
Sinon, c'est juste un echo qui se fait lorsque tout s'est bien déroulé.
Pourquoi, je n'ai pas utilisé le bindParam pour les 2 variables ? Cela ne m'est pas venu à l'esprit car pour moi, il n'y avait que la variable de décision à envoyer.... l'autre ($NumStage) étant déjà dans la table, elle ne sert qu'à caler l'endroit où la valeur de la variable ($Validation) doit être mise.
Merci pour l'intérêt porté à mon soucis maintenant résolu.
Daniel
12 avril 2020 à 21:08
Merci pour le code amélioré et sûrement plus conventionnel que mon bricolage.
Daniel