Partage
  • Partager sur Facebook
  • Partager sur Twitter

Warning: PDOStatement::execute(): SQLSTATE[HY093]:

Bonjour je suis un débutant en php.

Sujet résolu
    18 mai 2022 à 17:33:47

    Je suis un débutant en php. 

    J'essai de créer une page web et voici l'erreur que dans l'exécution de mon code

    Attention : PDOStatement::execute(): SQLSTATE[HY093] : Numéro de paramètre invalide : le nombre de variables liées ne correspond pas au nombre de jetons dans C:\xampp\htdocs\monoshop\config\commandes.php à la ligne 9

    <?php
    
    function ajouter($image, $nom, $prix, $desc)
    {
    	if(require("connexion.php"))
    	{
    	  $require = $access->prepare("INSERT INTO produits (image, nom, prix, description) VALUES ('$image', '$nom', $prix, '$desc')");
    
    	  $require->execute(array($image, $nom, $prix, $desc));
    
    	  $require->closeCursor();
    	}
    }
    <?php
    
    try {
    	 $access=new pdo("mysql:host=localhost;dbname=monoshop;charset=utf8", "root", "");
    
    	 $access->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    
    } catch (Exception $e) 
    {
    	$e->getMessage();
    }
    
    
    	
    
    ?>





    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2022 à 17:49:52

      Hello,

      Tu as inséré les variables directement et non utilisé des paramètres numéroté ou nommé :

      $require = $access->prepare("INSERT INTO produits (image, nom, prix, description) VALUES ('$image', '$nom', $prix, '$desc')");

      Il faut plutôt faire quelque chose comme ceci : 

      $require = $access->prepare("INSERT INTO produits (image, nom, prix, description) VALUES (:image, :nom, :prix, :desc)");
      $require->execute([
          ':image' => $image,
          ':nom' => $nom,
          ':prix' => $prix,
          ':desc' => $desc,
      ]);

      Par contre je ne sais pas si tu es dans une entreprise ou si c'est un projet perso mais le code est à revoir.

      Le try catch pour la connexion, la syntax des tableaux, un if sur un require qui ne doit pas retourner de valeur surement.

      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2022 à 17:59:23

        Je ne suis pas dans une entreprise. je suis entrain de m'entrainer personnellement.

        Je l'ai essayé ça marche bien.

        Merci :)

        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2022 à 19:22:36

          Si tu apprends seul fait bien attention à prendre des tuto assez récent. Je vois encore trop de code d'il y a 6 ans présent.

          https://grafikart.fr/formations/php

          • Partager sur Facebook
          • Partager sur Twitter

          Warning: PDOStatement::execute(): SQLSTATE[HY093]:

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown