如果这是真的,那么这样做......解释?

时间:2013-06-28 14:47:31

标签: php

方法:

    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 if(true)然后......,你真的必须包括if!= true或if == true?

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:4)

让您更新问题,我可以看到问题所在。 这句话是完全错误的:

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

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

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

但是,如果你正确粘贴它,你的代码根本不起作用,因为它会导致解析错误,你可以在这里看到:http://ideone.com/CPfkNi