Viktor Viktor - 6 months ago 18
MySQL Question

Problems with checking for duplicate user in MySQL with php

Im trying to check if the username already exists in the database, but I'm struggling with it. I get an error saying:

Call to a member function bind_param() on boolean in /var/www/public/firsttry/index.php


This is part of my code where I'm trying to implement this:

/*Check for duplicate in DB */
$stmt2 = $mysqli->prepare("SELECT username FROM Users (username, password) WHERE username = ?");

$stmt2->bind_param("s", $username);
$stmt2->execute();

$rows= mysqli_num_rows($stmt2);

if($rows>=1){
echo "<script type='text/javascript'>alert('This username is taken!')</script>";
}
else{
/*Proceed*/
}


As you can see first I write a prepared statement and try to bind a value into it which is
$username
($_POST["username"])
is assigned to it. I execute the query and then I try to see how many affected rows are returned, if it is more or equal to 1, I throw an alert, else, user is able to register.
Im pretty sure its just some small mistake, but I am kinda new to php so please bear with me. I am aware that my
SELECT
statement might return false, but why does it complain that I am trying to
bind_param
on boolean?

Answer

Change your select query in:

$stmt2 = $mysqli->prepare("SELECT username FROM Users WHERE username = ?");

And you should use an if statement to have a safe code:

if ($stmt2 = $mysqli->prepare("SELECT username FROM Users WHERE username = ?"))