使用PDO执行SQL语句时清空数组

时间:2014-08-13 05:08:49

标签: php pdo

我正在关注MVC的教程,我陷入了无法进一步发展的境地。

问题在于,当我执行SQL语句时,我试图获取值并只打印它/ echo它。

我有一个功能,我正在实现它。这是代码:

注意:我使用filter_input()方法获取$ _POST(['登录'])和$ _POST(['密码'])。出于某种原因,我无法直接使用$ _POST()方法,因为它会向我发出警告,表示不能直接访问超全球$ _POST。

我不确定这里究竟是什么问题。我为此得到零,我实际上在数据库中有一个条目。

public function run(){

        $login =         filter_input(INPUT_POST, 'login');
        $password =      filter_input(INPUT_POST, 'password');

        $sth = $this->db->prepare("SELECT id FROM users WHERE 
                login = :login AND password = MD5(:password)");
        $sth->execute(array(
            ':login' => $login,
            ':password' => $password
        ));

        $data = $sth->fetchAll(); 
        print_r($data);
    /*$count = $sth->rowCount();
    print_r($count);

    if($count>0){

        echo 'Have a record.';

    }else{

        echo 'No Record found.';

    }*/

    }

如果有人可以帮我找到问题,我将非常感激。

1 个答案:

答案 0 :(得分:2)

直接来自manual

  

PDOStatement :: rowCount()返回受相应PDOStatement对象执行的最后一个DELETE,INSERT或UPDATE语句影响的行数。

更新后:请尝试以下,

 $sth = $this->db->prepare("SELECT id FROM users WHERE 
                login = :login AND password = :password");

 $sth->execute(array(
            ':login' => $login,
            ':password' => md5($password)
        ));
 $data = $sth->fetchAll();