IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

message d'erreur SQLSTATE[HY093] lors d'une requête préparée Update liée à un formulaire


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut message d'erreur SQLSTATE[HY093] lors d'une requête préparée Update liée à un formulaire
    Bonjour,
    j'ai crée une function avec une requete préparée et l'objectif est que l'utilisateur puisse modifiée le titre de la collection qu'il a crée. A la validation du formulaire j'ai un message d'erreur

    "Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in modelCollections.php/"

    Pourtant en sous j'ai bien cette ligne et qui correspond bien à mes trois variables lors de mon test à la validation du formulaire (il a bien récupéré les valeurs):
    571840 ModelCollections->modifyCollections( $newTitre_coll = 'miocambio', $id_coll = '3', $fkidUtilis = '63' )

    Voici ma fonctions dans le model :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     function modifyCollections($newTitre_coll, $id_coll, $fkidUtilis) {
                $req = $this->bdd->prepare ("
                UPDATE collections SET 'titre_coll'=':newTitre_coll' where id_coll =':id_coll' and 'fkidUtilis=':fkidUtilis'");
                $req->bindParam(':newTitre_coll', $newTitre_coll);
                $req->bindParam(':id_coll', $id_coll);
                $req->bindParam(':fkidUtilis', $fkidUtilis);
                $req->execute();
            }
    l'erreur est à la ligne 38 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(isset($_POST["submitModifyCollect"])) {
        if(isset($_POST["modifyColl"])) {
            $modifyCollections = $collectionsController->modifyCollections(
            $newTitreColl=$_POST['modifyColl'],
            $id_coll = $_POST['collections'],
            $fkidUtilis = $_SESSION['id']
            );
        }
    }
    et si besoin le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form action="" method="post">
        <div class="form-group mb-3">
            <label for="identifiant">modifier une collection</label>
            <div class="col-md-3 p-2 text-center">
                <select select class ="form-select" name="collections">
                    <option selected>collections</option>
                    <?php foreach($collections as $collection) : ?>
                    <option value="<?= $collection['id_coll']?>"><?= $collection['titre_coll']?></option>
                    <?php endforeach?>  
                </select>
            <input type="text" class="form-control" name="modifyColl">
        </div>
        <input type="submit" name="submitModifyCollect" class=" mb-3" value="submit">
        </form>
    je ne comprend pas trop pourtant j'ai passé du temps. Que veut dire parametres invalides ? ma table a bien trois colonne id_coll, titre_coll, et fkidUtilis
    merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 506
    Par défaut
    déjà vous avez mis des guillemets autour du nom de champ titre_coll.
    et ensuite, il n'y a pas de guillemets non plus autour des emplacements des valeurs, regardez les exemples là :
    https://www.php.net/manual/fr/pdo.pr...statements.php

  3. #3
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut
    oui j'ai fais des erreurs, j'ai testé la requête dans phpMYAdmin puis j'ai fait bêtement un copier/coller et puis l'adapter pour une requête préparée. Merci beaucoup tout marche. Je vais éviter les copier/coller.
    Bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Erreur 'SQLSTATE[HY093]' lors d'opérations sur $bdd
    Par captainchristian dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/04/2018, 10h49
  2. Réponses: 3
    Dernier message: 25/03/2011, 18h01
  3. Message d'erreur en php lors d'une ouverture d'une session
    Par emmanuelmaigne dans le forum Langage
    Réponses: 3
    Dernier message: 22/03/2011, 12h31
  4. Message d'erreur DB ERROR lors d'une mise à jour
    Par Rony Rauzduel dans le forum Administration
    Réponses: 4
    Dernier message: 03/03/2010, 23h09
  5. Réponses: 1
    Dernier message: 03/03/2010, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo