Welcome to Code Forum!

Join a community that supports you and your coding journey from day one. We strive to be a friendly, supportive community that empowers everyone to be better developers. By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!
  • Guest, before posting your code please take these rules into consideration:
    • It is required to use our BBCode feature to display your code. While within the editor click < / > or >_ and place your code within the BB Code prompt. This helps others with finding a solution by making it easier to read and easier to copy.
    • You can also use markdown to share your code. When using markdown your code will be automatically converted to BBCode. For help with markdown check out the markdown guide.
    • Don't share a wall of code. All we want is the problem area, the code related to your issue.

    GIF shows where to locate </> in the thread and or post editor toolbar.
    To learn more about how to use our BBCode feature, review our "How to post your code into threads" here.

    Thank you, Code Forum.

PHP Quick PHP help!

janey98

New Coder
Hello world!

Looking for help with my login system code (php and SQL).
This error is returning when I try to login on my form.

Fatal error: Call to a member function execute() on boolean in /home/****/****/***/auth.php on line 16

PHP:
<?php
include 'dbconn.php';

if (isset($_POST['username']) && isset($_POST['password_hash']))
    {
    
    $username = $_POST['username'];
    $password_hash = $_POST['password_hash'];
    
    if (empty($username)) {
        header("Location: login.html?error=Email is required");
    }else if (empty($password_hash)){
        header("Location: login.html?error=Password is required");
    }else {
        $stmt = $conn->prepare("SELECT * FROM users WHERE username=?");
        $stmt->execute([$username]);
        
        if ($stmt->rowCount() === 1) {
            $user = $stmt->fetch();

            $user_email = $user['username'];
            $user_password = $user['password_hash'];
            
            if ($username === $user_email) {
                if (password_verify($password_hash, $user_password)) {
                    $_SESSION['user_email'] = $user_email;
                    $_SESSION['user_password'] = $user_password;
                    header("Location: index.php");
                    
            }else{
                header("Location: login.html?error=Incorrect email or password=$email");
            }
        }else {
                    header("Location: login.php?error=Incorect User name or password&email=$email");
                }
    }else {
            header("Location: login.php?error=Incorect User name or password&email=$email");
        }
    }

}
?>

Just wondering if I am missing something, as I am fairly new to coding.
Thanks!
 
Hello world!

Looking for help with my login system code (php and SQL).
This error is returning when I try to login on my form.

Fatal error: Call to a member function execute() on boolean in /home/****/****/***/auth.php on line 16

PHP:
<?php
include 'dbconn.php';

if (isset($_POST['username']) && isset($_POST['password_hash']))
    {
 
    $username = $_POST['username'];
    $password_hash = $_POST['password_hash'];
 
    if (empty($username)) {
        header("Location: login.html?error=Email is required");
    }else if (empty($password_hash)){
        header("Location: login.html?error=Password is required");
    }else {
        $stmt = $conn->prepare("SELECT * FROM users WHERE username=?");
        $stmt->execute([$username]);
     
        if ($stmt->rowCount() === 1) {
            $user = $stmt->fetch();

            $user_email = $user['username'];
            $user_password = $user['password_hash'];
         
            if ($username === $user_email) {
                if (password_verify($password_hash, $user_password)) {
                    $_SESSION['user_email'] = $user_email;
                    $_SESSION['user_password'] = $user_password;
                    header("Location: index.php");
                 
            }else{
                header("Location: login.html?error=Incorrect email or password=$email");
            }
        }else {
                    header("Location: login.php?error=Incorect User name or password&email=$email");
                }
    }else {
            header("Location: login.php?error=Incorect User name or password&email=$email");
        }
    }

}
?>

Just wondering if I am missing something, as I am fairly new to coding.
Thanks!
Your problem is this
PHP:
$stmt = $conn->prepare("SELECT * FROM users WHERE username=?");
$stmt->execute([$username]);
The prepare statement is failing, causing null to be returned in $stmt. This causes the error that you see.
I think your select clause is invalid. Are you sure that question mark is what you want ? Question marks are used in Embedded SQL as placeholders for dynamic values which are subsequently provided by bind commands. I don't know PHP well enough to know if that applies here. I think either the ? is invalid or you are missing a bind command. Hope this helps !
 
Last edited by a moderator:
Back
Top Bottom