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

cricri2394 Messages postés 169 Statut Membre -  
cricri2394 Messages postés 169 Statut Membre -
Bonjour,

je ne comprends pas l'erreur (enfin le warning) que me donne php à l'exécution d'une requête préparée. J'ai beau tout tourner dans tous les sens, je ne vois pas ce qui cloche.
J'ai donc le warning suivant :

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\Program Files (x86)\EasyPHP-12.1\www\***.php on line 200

$id = nouv_id($conn,'boutique');		
//die('id de la nouvelle boutique : '.$id);

$stmt = $conn->prepare("insert into wedding_presta_boutique values(:boutique_id, :boutique_user_id,
:boutique_nom,
:boutique_descr,
:boutique_type);");

$stmt->bindParam(':boutique_id' , $boutique_id);
$stmt->bindParam(':boutique_user_id' , $boutique_user_id);
$stmt->bindParam(':boutique_nom,' , $boutique_nom);
$stmt->bindParam(':boutique_descr' , $boutique_descr);
$stmt->bindParam(':boutique_type' , $boutique_type);

$boutique_id = $id;
$boutique_user_id = $user_id;
$boutique_nom = $_POST['nom_boutique'];
$boutique_descr = $_POST['descr_boutique'];
$boutique_type = $_POST['type_boutique'];

$stmt->execute();

J'ai la même requête au dessus qui elle fonctionne parfaitement par contre


$stmt = $conn->prepare("insert into wedding_user values(:user_id,
:user_login,
SHA1(:user_mdp),
:user_email,
:user_nom, :user_prenom,
:user_statut,
:user_date_naissance,
:user_siret,
:user_rs, :user_adr,
:user_cp,
:user_ville, :user_pays, :user_tel,
:user_site,
:user_fb,
:user_valide);");
$stmt->bindParam(':user_id',$user_id);
$stmt->bindParam(':user_login',$user_login);
$stmt->bindParam(':user_mdp',$user_mdp);
$stmt->bindParam(':user_email',$user_email);
$stmt->bindParam(':user_nom',$user_nom);
$stmt->bindParam(':user_prenom',$user_prenom);
$stmt->bindParam(':user_statut',$user_statut);
$stmt->bindParam(':user_date_naissance',$user_date_naissance);
$stmt->bindParam(':user_siret',$user_siret);
$stmt->bindParam(':user_rs',$user_rs);
$stmt->bindParam(':user_adr',$user_adr);
$stmt->bindParam(':user_cp',$user_cp);
$stmt->bindParam(':user_ville',$user_ville);
$stmt->bindParam(':user_pays',$user_pays);
$stmt->bindParam(':user_tel',$user_tel);
$stmt->bindParam(':user_site',$user_site);
$stmt->bindParam(':user_fb',$user_fb);
$stmt->bindParam(':user_valide',$user_valide);

$user_id = $id;
$user_login = $_POST['loginInscr'];//$login;
$user_mdp = $_POST['mdpInscr'];// $mdp;
$user_email = $_POST['niouf'];//$niouf;
$user_nom = $_POST['nom'];//$nom;
$user_prenom = $_POST['prenom'];//$prenom;
$user_statut = $_POST['statut'];//$statut;
$user_date_naissance = $_POST['date_naissance'];//$date_naissance;
$user_siret = $_POST['siret'];//$siret;
$user_rs = $_POST['rs'];//$rs;
$user_adr = $_POST['adr'];//$adr;
$user_cp = $_POST['cp'];//$cp;
$user_ville = $_POST['ville'];//$ville;
$user_pays = $_POST['pays'];//$pays;
$user_tel = $_POST['tel']; //$tel;
$user_site = $_POST['site'];//$site;
$user_fb = $_POST['fb']; //$fb;
$user_valide = 0;

$stmt->execute();

Si quelqu'un voyait ce que je ne vois pas ...

5 réponses

  1. ljm972 Messages postés 255 Date d'inscription   Statut Membre Dernière intervention   29
     
    Bonjour,
    Peut-être que tu devrais faire un test sur les variable $_POST, s'il n'y a pas une entré nulle
    0
  2. cricri2394 Messages postés 169 Statut Membre 1
     
    Hello, merci pour ta réponse rapide.
    J'ai testé et mes post sont bien renseignés.
    Je vais essayer sans la transaction pdo pour voir.
    0
  3. ljm972 Messages postés 255 Date d'inscription   Statut Membre Dernière intervention   29
     
    Bonjour,
    comment tu as implémenté ta fonction nouv_id() ?
    0
  4. cricri2394 Messages postés 169 Statut Membre 1
     
    Hello,

    voici la fonction

    function nouv_id($conn,$table){
    switch($table){ // en fonction de la table, on tape là ou il faut pour trouver le nouvel id
    case 'user' : // on tape dans user
    $req_nouvId = "select user_id
    from wedding_user
    order by user_id desc limit 0,1;";

    $chp = "user_id";
    break;
    case 'boutique' : // on tape dans boutique
    $req_nouvId = "select boutique_id
    from wedding_presta_boutique
    order by boutique_id desc limit 0,1;";

    $chp = "boutique_id";
    break;
    }//end switch

    $res = $conn->query($req_nouvId)
    ->fetchAll(PDO::FETCH_ASSOC);

    if(count($res) == 0){
    $nouvId = 1;
    }else{ //var_dump($res);
    $id = $res[0][$chp];
    $nouvId = $id+1;
    }
    //die($nouvId);
    return $nouvId;
    }
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cricri2394 Messages postés 169 Statut Membre 1
     
    Bon j'ai trouvé une solution qui fonctionne. Je ne comprends pas mieux comme ça ça marche :

    $stmt = $conn->prepare("insert into wedding_presta_boutique values(?,?,?,?,?);");		

    $stmt->execute(array($boutique_id,
    $boutique_user_id,
    $boutique_nom,
    $boutique_descr,
    $boutique_type ));
    0