Как получить количество строк с fetchColumn и bindParam

Почему это не работает

   $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 ответ

Решение

Чтобы получить количество строк с fetchColumn, вы должны выбрать это число с вашим запросом

Итак, вместо

SELECT * FROM

ты должен сделать это

SELECT count(*) FROM

и у тебя будет этот номер.

bindParam должен использоваться как обычно, так же, как вы делали это раньше.
Тем не менее, вы должны избегать опечаток и подобных ошибок в вашем коде.
И, конечно же, вы должны настроить надлежащие отчеты об ошибках, чтобы вы могли обнаружить все ошибки.

Почему это не работает

Всегда подключайтесь к PDO, как описано в теге вики
и ты узнаешь.

Другие вопросы по тегам