首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么if($signup->signup(...))在注册成功时返回消息“注册失败”?

为什么if($signup->signup(...))在注册成功时返回消息“注册失败”?
EN

Stack Overflow用户
提问于 2019-05-21 04:36:23
回答 1查看 52关注 0票数 1

所以我在php中注意到了一些我不太理解的东西

假设我有一个简单的注册function,如下所示:

代码语言:javascript
复制
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();
}
}

在另一个文件中,我想检查注册是否成功,如下所示:

代码语言:javascript
复制
require("signup.php");
$signup=new signup();
if($signup->signup(...)){
echo "Signed up";
}
else{
echo "Signup failed";
}

如果我成功注册,此语句将返回注册失败的,如果注册失败,将返回注册

我假设这意味着如果function注册运行成功,这意味着注册成功,所以消息应该是Signed up

但如果我在if语句中使用!,如下所示:

代码语言:javascript
复制
if(!$signup->signup(...)){
echo "Signed up";
}
else{
echo "Signup failed";
}

在这种情况下,如果数据正确且注册成功,则会回显注册

不要误解我的问题,代码工作正常,没有错误,我只是好奇为什么它是这样工作的。

谢谢你的回答!

PS:上面的代码不是完整的代码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-21 04:58:03

signup()方法没有return语句,因此它默认返回null,这是False值。您需要返回查询是否成功的指示。

代码语言:javascript
复制
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();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56227843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档