如何使用fetchColumn和bindParam获取行数

时间:2013-02-28 06:15:26

标签: pdo prepared-statement rowcount prepare sqlbindparameter

为什么这不起作用

   $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';
  }

然后当我运行此代码时,它可以正常工作

   $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';
  }

当我尝试使用更多然后在bindParam值时代码崩溃。为什么不能有更多的值来检查?

1 个答案:

答案 0 :(得分:0)

要使用fetchColumn获取行数,您必须在查询中选择此数字

所以,而不是

SELECT * FROM

你必须成功

SELECT count(*) FROM

你将拥有这个号码。

bindParam必须像往常一样使用,就像你之前一样 但是,您必须避免在代码中出现拼写错误等错误 当然,您必须设置正确的错误报告,以便能够发现所有错误。

  

为什么这不起作用

始终连接到PDO,如tag wiki所述 你会知道的。