0
votes

I am new to PHP and i have got this error:

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

I don't know what is it and how to solve, I searched over the internet but I couldn't find nothing.

My PHP code:

<?php

  #DB connect
  $bdd = new PDO('mysql:host=localhost;dbname=alfarabi_website','root','');

  #Requete
  $requete = $bdd -> prepare('INSERT INTO users (prenom,nom,anniversaire,genre,email,password,role) VALUES(?,?,?,?,?,?,?)');
  $requete -> execute(array(isset($_POST['first_name'] ,$_POST['last_name'],$_POST['birthday'],$_POST['gender'],$_POST['email'],$_POST['password'],$_POST['subject'])));

?>
1
Hmm, isset() returns one value, not seven or does it? - sticky bit

1 Answers

0
votes

You have to do isset before ,

$first_name = isset($_POST['first_name'] ? $_POST['first_name']  : null ;
$last_name= isset($_POST['last_name'] ? $_POST['last_name']  : null ;
$birthday= isset($_POST['birthday'] ? $_POST['birthday']  : null ;

Then

 $requete = $bdd -> prepare('INSERT INTO users   (prenom,nom,anniversaire,genre,email,password,role) VALUES(?,?,?,?,?,?,?)');


$requete -> execute(array($first_name ,$last_name,$birthday,.....)); 

But you will have to check if first_name, last_name or birthday variables are !== null.