开发者

mysqli - fatal error

i have a fatal error in my code, Fatal error: Call to a member function prepare() on a non-object in ... on line 28

Updated code:

<?
function check($sql, $db, $email, $pwdHasher, $hash, $userExists, $sendPass ) {
    if(!empty($_POST['email']) && validateEmail($email)) {
        $email = $_POST["email"];
        if ($sql = $db->prepare("select email from users where email=?")) { 

            $sql->bind_param('s', $email);

            $sql->execute();

            $sql->bind_result($email);

            while ($sql->fetch()) {

                $pwdHasher = new PasswordHash(8, FALSE);

                $hash = $pwdHasher->HashPassword($userExists["email"]);

                $sendPass=$hash;

                ($sql = $db->prepare('insert into password_reset (code) values (?)')); Warning: mysqli::prepare() [mysqli.prepare]: All data must be fetched before a new statement prepare takes place 
                $sql->bind_param('s', $hash); //Fatal error: Call to a member function bind_param() on a non-object

                $sql->execute();
                $sql->fetch();

            }
        }
    }
}

    if (check($sql, $db, $email, $email,$pwdHasher, $hash, $userExists, $sendPass )) {
        ($sql = $db->prepare("select userid from password_reset where code=?"));
        $sql->bind_param('s', $hash);
        $sql->execute();
        $sql->bind_result($hash);

        if ($sql->fetch()) {
            echo $hash;

        };

        $pwrurl = "www.yoursite.com/reset_password.php?userid=" .$hash . "&code =" . $sendPass;

        $mailbody = "Dear user,<br><br>If this e-mail does not apply to you please ignore it. It appears that you have requested a password reset at our website www.yoursitehere.com<br>
            To reset your password, please click the link below. If you cannot click it, please paste it into your web browser's address bar.<br> <a href='$pwrurl'>$pwrurl</a>  &开发者_开发技巧lt;br> <br>
            Thanks,\nThe Administration";

        $mail->MsgHTML($mailbody);

        $mail->AddAddress($email,"Membro");

        $mail->IsHTML(true);

        if(!$mail->Send()) {
            echo "Deu erro: " . $mail->ErrorInfo;
        } else {
            echo "Enviado com sucesso";
        }


        $sql->close();
        $db->close();

    }


?>

can someone check the code? my idea is. I have a function and if is valid send the email. Probably i have some error in the code

thanks!!


You are calling check() with one parameter too few.

function check($sql, $db, $email, $pwdHasher, $hash, $userExists, $sendPass ) {
                      ^------------ Missing

check($sql, $email, $email,$pwdHasher, $hash, $userExists, $sendPass 


It is clear from the error that your $db is not the object and also not the object which have the connection for database and can call mysqli function.

Please check and make sure you are passing the correct object in the function and you are forgetting to pass that object.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜