0

Why does this not work

   $sth = $pdo->prepare("SELECT * FROM tempusers WHERE tempusers.username = :username AND   tempuser.email = :email AND password = :password");

   $sth->bindParam(':username', $register_data['username'], PDO::PARAM_STR);
   $sth->bindParam(':email', $register_data['email'], PDO::PARAM_STR);
   $sth->bindParam(':password', $register_data['password'], PDO::PARAM_STR);
   $sth->execute();
  if($sth->fetchColumn() > 0) {
      echo 'yes';
  }else{
      echo 'no';
  }

And then when I run this code it works

   $sth = $pdo->prepare("SELECT * FROM tempusers WHERE tempusers.username = :username");
   $sth->bindParam(':username', $register_data['username'], PDO::PARAM_STR);
   $sth->execute();
  if($sth->fetchColumn() > 0) {
      echo 'yes';
  }else{
      echo 'no';
  }

When I try to use more then on bindParam value the code crashes. Why can't have more the one value to check against?

Dharman
  • 30,962
  • 25
  • 85
  • 135
user747796
  • 51
  • 1
  • 4
  • 9

1 Answers1

0

To get number of rows with fetchColumn, you have to select this number with your query

So, instead of

SELECT * FROM

you have to make it

SELECT count(*) FROM

and you will have that number.

bindParam have to be used as usual, the same way you did it before.
However, you have to avoid typos and the like mistakes in your code.
And of course you have to set up proper error reporting to make yourself be able to spot all the errors.

Why does this not work

Always connect to PDO as described in the tag wiki
and you will know.

Community
  • 1
  • 1
Your Common Sense
  • 156,878
  • 40
  • 214
  • 345