0

なぜこれが機能しないのですか

   $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 つ以上持つことができないのはなぜですか?

4

1 に答える 1

0

fetchColumnで行数を取得するには、クエリでこの数を選択する必要があります

だから、代わりに

SELECT * FROM

あなたはそれをしなければなりません

SELECT count(*) FROM

そしてあなたはその番号を持っているでしょう。

bindParamは、以前と同じように、通常どおりに使用する必要があります。
ただし、コードのタイプミスなどを回避する必要があります。
そしてもちろん、すべてのエラーを見つけられるように、適切なエラー報告を設定する必要があります。

なぜこれが機能しないのですか

タグウィキで説明されているように、常にPDOに接続して
ください。

于 2013-02-28T06:31:19.387 に答える