Почему if ($ signup-> signup (...)) возвращается с сообщением «Ошибка регистрации», когда регистрация прошла успешно? - PullRequest
1 голос
/ 20 мая 2019

Итак, я заметил в php что-то, чего я не совсем понимаю

Скажем, у меня есть простая регистрация function, например:

Class signup extends Connect{
function __construct(){
parent::__construct();
parent::connect();
}
function signup($username,$password){
$res=$this->conn->prepare("INSERT INTO users(username,password) 
VALUES(?,?)");
$res->bindparam(1,$username);
$res->bindparam(2,$password); 
$res->execute();
}
}

И в другомфайл, я хочу проверить, была ли регистрация успешной, как это:

require("signup.php");
$signup=new signup();
if($signup->signup(...)){
echo "Signed up";
}
else{
echo "Signup failed";
}

И этот оператор вернется с Ошибка Sigup , если я успешно зарегистрировался и получит Зарегистрироваться , если это не удалось.

Я предположил, что это означает, что если регистрация function прошла успешно, это означает, что регистрация прошла успешно, поэтому сообщение должно быть Зарегистрировано

Но если я использую ! в выражении if, например:

if(!$signup->signup(...)){
echo "Signed up";
}
else{
echo "Signup failed";
}

В этом случае Зарегистрированный будет отображаться, еслиданные были правильными, и регистрация прошла успешно, как и должно быть.

Не поймите меня неправильно, код работает правильно, ошибок нет, мне просто любопытно, почему он так работает.

Спасибо за любые ответы!

PS: Приведенные выше коды не являются полными кода

1 Ответ

2 голосов
/ 20 мая 2019

Метод signup() не имеет оператора return, поэтому он возвращает null по умолчанию, что неверно.Вам необходимо вернуть указание того, был ли запрос успешным.

function signup($username,$password){
    $res=$this->conn->prepare("INSERT INTO users(username,password) VALUES(?,?)");
    $res->bindparam(1,$username);
    $res->bindparam(2,$password); 
    return $res->execute();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...