UPDATE ... WHERE..pb de validité du contenu de la variable
Résolu
danielos77
Messages postés
108
Date d'inscription
Statut
Membre
Dernière intervention
-
danielos77 Messages postés 108 Date d'inscription Statut Membre Dernière intervention -
danielos77 Messages postés 108 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- UPDATE ... WHERE..pb de validité du contenu de la variable
- Windows update bloqué - Guide
- Word a trouvé du contenu illisible - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Where is it - Télécharger - Gestion de fichiers
2 réponses
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);
ç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
--
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
Merci pour le code amélioré et sûrement plus conventionnel que mon bricolage.
Daniel