astral
astral

Reputation: 53

SQLSTATE[HY093] Error

I am trying to run the following in PHP:

$stmt = $db_con->prepare("SELECT * FROM users WHERE email=:email");
$stmt->execute(array(":email"=>$user_email));
$count = $stmt->rowCount();

if($count==0){

$stmt = $db_con->prepare("INSERT INTO users(username,email,password,ip)VALUES(:uname, :email, :password, :ip)");
$stmt->bindParam(":username",$username);
$stmt->bindParam(":email",$useremail);
 $stmt->bindParam(":password",$hasheduserpassword);
$stmt->bindParam(":ip",$userip);

As a result, I get the following error:

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Upvotes: 2

Views: 31

Answers (3)

Robert
Robert

Reputation: 10390

Error is here:

VALUES(:uname,

$stmt->bindParam(":username",$username);

MySql is looking for :username but it cannot find it because you named it :uname.

Both must match.

Upvotes: 0

Passionate Coder
Passionate Coder

Reputation: 7294

Your error lies here

  $stmt = $db_con->prepare("INSERT INTO users(username,email,password,ip)VALUES(:uname, :email, :password, :ip)");
 //   $stmt->bindParam(":username",$username);// this shoud be uname
 $stmt->bindParam(":uname",$username);

Upvotes: 0

Israel Pinheiro
Israel Pinheiro

Reputation: 95

In the query you are defining uname while setting a parameter called username try

$stmt = $db_con->prepare("INSERT INTO users(username,email,password,ip)VALUES(:username, :email, :password, :ip)");

Upvotes: 1

Related Questions