Как получить количество строк с 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, как описано в теге вики
и ты узнаешь.