调用一个成员函数bindParam()是什么?

时间:2017-06-16 05:05:31

标签: php

我的PHP代码如下所示。

class Login {

    public function logar($login, $senha){
        $db = new Database();
        try{
            $conn = $db->connect();
            $prepare = $conn->prepare("SELECT * FROM account WHERE Login = :login AND Passwd = :senha");
            $prepare->bindParam(':login', $login, PDO::PARAM_STR);
            $prepare->bindParam(':senha', $senha, PDO::PARAM_STR);
            $prepare->execute();
            $ranking = $prepare->rowCount();
            if ($ranking >= 1){
                return "<div class='n_ok' style='margin:9px 15px;'><p>Successfully.</p></div>";
            }else{
                return "<div class='n_error' style='margin:9px 15px;'><p>Usuario ou senha incorreta.</p></div>";
            }
        }catch(PDOException $e){
            echo "Erro: ".$e->getMessage();
        }
    }

}

当我正在运行时,会出现以下错误

  

致命错误:在第9行的C:\ AppServ \ www \ class \ Login.class.php中调用boolean上的成员函数bindParam()**

2 个答案:

答案 0 :(得分:0)

准备可能会返回false, 始终使用

关闭之前的声明
$statement->close();

如果语法正确,以下查询也会运行良好。

答案 1 :(得分:0)

&#34;新数据库()&#34;参考。我希望它应该返回PDO Connection。

以下代码可以正常使用

class Login {
    public function logar($login, $senha){
        $conn = new PDO('mysql:host=dbhostname;dbname=databasename', $user, $pass);
        try{
            $prepare = $conn->prepare("SELECT * FROM account WHERE Login = :login AND Passwd = :senha");
            $prepare->bindParam(':login', $login, PDO::PARAM_STR);
            $prepare->bindParam(':senha', $senha, PDO::PARAM_STR);
            $prepare->execute();
            $ranking = $prepare->rowCount();
            if ($ranking >= 1){
                return "<div class='n_ok' style='margin:9px 15px;'><p>Successfully.</p></div>";
            }else{
                return "<div class='n_error' style='margin:9px 15px;'><p>Usuario ou senha incorreta.</p></div>";
            }
        }catch(PDOException $e){
            echo "Erro: ".$e->getMessage();
        }
    }

}