-2

方法:

    public function checkName($name)
    {
        $this->check = $this->pdo->prepare("SELECT * FROM users WHERE username = :name");
        $this->check->execute(array(":name" => $name));

        if ($this->check->rowCount() > 0)
        {
            return true;
        }
    }

这段代码显然不起作用:

if (!$user->checkName('Jony'))
{
 echo '1';
}

即使我在数据库中有 Jony,它也会回显“1”。

此代码有效:

if ($user->checkName('Jony') != true) 
{
    echo '1';
}

这不会回显“1”,但如果我不包含 jony,则会回显 1,并且它不在数据库中。

我认为你可以只做 if (true) then ...,你真的必须包括 if != true 或 if == true 吗?

4

2 回答 2

7

您可以通过返回比较结果来稍微简化您的功能。

public function checkName($name)
{
    $this->check = $this->pdo->prepare("SELECT * FROM users WHERE username = :name");
    $this->check->execute(array(":name" => $name));

    return $this->check->rowCount() > 0;
}

您还需要移动 not 运算符。

!$user->checkName('Jony')
于 2013-06-28T14:50:34.150 回答
4

让你更新你的问题,我可以看到问题。这种说法是完全错误的:

if ($user->!checkName('Jony'))

您应该以这种方式测试该值:

if (!$user->checkName('Jony'))

但是,如果您正确粘贴,您的代码根本不应该工作,因为它会导致解析错误,如您在此处看到的:http: //ideone.com/CPfkNi

于 2013-06-28T14:54:58.913 回答