0

I am a training developer, I faced an error on bind_param() function in my code.

Here is my create_account.php code

    <?php

    if(!isset($_POST['username'])||!isset($_POST['email'])||!isset($_POST['password'])){
    die("Data Error");
    }

    if(strlen($_POST['username'])>150){
    die("Username too Long");
    }


    if(!strpos($_POST['email'],"@")){
    die("Invalid Email Address");
    }

    include_once "config.php";
    // congig.php is as follows
    //define("SERVER_NAME","localhost");
    //define("USERNAME","root");
    //define("PASSWORD","");
    //define("DATABASE","mydatabase");

    $conn = new mysqli(SERVER_NAME,USERNAME,PASSWORD,DATABASE);
    if($conn->connect_error){
    die("Connection Error!".$conn->connect_error);
    }

    $username = $_POST['username'];

    // Code Works till here


    $stmt = $conn->prepare("SELECT count(*) FROM 'users' WHERE 'username' = ?");

    $stmt->bind_param("s",$username);
    $stmt->execute();
    $stmt->bind_result($count);
    $stmt->fetch();
    if($count>0){
    die("Username Already Exist");
    }

    $stmt->close();

    $email = $_POST['email'];
    $password = password_hash($_POST['password'],PASSWORD_BCRYPT);

    $stmt2 = $conn->prepare("INSERT INTO 'users' ('username','email','password') VALUES (?,?,?)");

    if (!$stmt) {
    echo "false";
    }
    else {

    $stmt2->bind_param("sss",$username,$email,$password);

    $stmt2->execute();

    }

    $conn->close();

    header("Location ../signup_success.php");

Database is as follows

id (auto incrementing)

username (150 char)

email (200 char)

password (150 char)

I'm getting error on both bind_paran() function saying

Fatal error: Call to a member function bind_param() on boolean .....

Please help

Community
  • 1
  • 1

1 Answers1

0

use ` instead of '

change

$stmt = $conn->prepare("SELECT count(*) FROM 'users' WHERE 'username' = ?");

to

$stmt = $conn->prepare("SELECT count(*) FROM `users` WHERE `username` = ?");

and

$stmt2 = $conn->prepare("INSERT INTO 'users' ('username','email','password') VALUES (?,?,?)");

to

$stmt2 = $conn->prepare("INSERT INTO `users` (`username`,`email`,`password`) VALUES (?,?,?)");
Hossam
  • 1,126
  • 8
  • 19