mysql_num_rows() expects parameter 1 to be resource, string given in
Solution 1
Try to like this:
$query = "SELECT username FROM $this->table WHERE username='$sUser'";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
Solution 2
Change:
$check = mysql_query("SELECT * FROM Test WHERE username = '$username'");
to
$check = mysql_query("SELECT * FROM Test WHERE username = '$username'") or die(mysql_error());
And you will see any potential errors that happens in the query.
Also, I would highly recomend using either PDO or Mysqli instead of mysql functions, as they are deprecated and will be removed in future php versions.
Solution 3
You can try like this
$sql= "SELECT * FROM Test WHERE username = '".$username."'";
$check = mysql_query($sql);
I think your $check returns null that is no user with this username and null can't be a parameter mysql_num_rows() function.
if($check)
{
echo "Username already taken";
}
else
{
echo "Username available";
// do other actions
}
Solution 4
Ok, if anyone having the same issue, just add the variable within the if() statement two times, like so:
$Query = mysql_query($sql);
IF($Query && mysql_num_rows($Query)> 0){ // continue with the code}
This should fix the issue.
Solution 5
First You make sure that connection established correctly to the database.
Instead of writing query directly in
$check = mysql_query("SELECT * FROM Test WHERE username = '$username'");
Store the query in variable as
$query = "SELECT * FROM Test WHERE username = '".$username."'";
and execute it as
$check = mysql_query($query);
if you are still facing the issue,
echo the query as
echo $query;
and execute the query directly in phpmyadmin and you can find the issue.
I hope this helps.
Benyaman
Updated on July 09, 2022Comments
-
Benyaman almost 2 years
I have read through many other threads about this exact problem, but i for some reason can not solve my problem. Really need some help.
if (!$username||!$password||!$email) echo "Please fill out all fields"; else { //encrypt password $password = md5($password); //check if username already taken $check = mysql_query("SELECT * FROM Test WHERE username = '$username'"); if (mysql_num_rows($check)>=1) echo "Username already taken"; else
It said
Warning: mysql_num_rows() expects parameter 1 to be resource, string given in /Users.....
if (mysql_num_rows($check)>=1)
This line..but when i run it in phpmyadmin, it returns results to me ok.Please help
-
Jite almost 11 yearsIf no user exists, query should return an empty set, not null.