Jump to content

Problem with retrieving results from MySQL query


gettingherdone

Recommended Posts

I am trying to take user input and check to see if it is already in a database. The function isUnique($userName, $link) takes the arguments of the given username and a link to the database, and returns true if the username is already in the column userid in the table login. Problem is the function always returns true. Here is the entire program ommiting parts that I believe cannot possible effect the situation here.


<?php
/*This function checks to see if the username is already in use
INPUT: the userName to check for and a link to the database
OUTPUT: true if there are no other users registered with userName
*/
function isUnique($userName, $link)
{
   $result = !!mysqli_fetch_row(mysqli_query($link, 'SELECT `userid`
   FROM `login`
   WHERE `userid` = \''.$userName.'\''));
   return $result;
}


echo '<html><head><title>testing</title><body>';
$uName = $_POST['us'];
$pass = $_POST['pa'];

//database work
$link = mysqli_connect("localhost:3306", "root", "");
if(!$link)
   die('Could not connect to MySQL: '.mysql_error());
$db_selected = mysqli_select_db($link, 'Accounts');
if(!$db_selected)
   die('Can\'t use Accounts: '.mysql_error());
echo '<br />Using Accounts database<br />';
if(isUnique($uName, $link))
{
   echo 'username is unique!<br />';
}
else
{
   echo 'username is not unique!<br />';
}
mysqli_close($link);

echo '</body></html>';
?>

 

 

"username is not unique!" is always displayed.

 

I also tried this code and it outputs:

 

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, arra

Select returned 0 rows



$query = mysqli_query($link, 'SELECT `userid` FROM `login` WHERE `userid` = \''.$userName.'\'');
   if(!$query)
   {
       printf("Error: %s\n", mysqli_error($link));
   }
   //else
   //    echo '<br />Query: '.$query.'<br />';
   $result = mysqli_fetch_row($query);
   printf("Select returned %d rows.\n", mysqli_num_rows($result));

 

I'm using the latest version of WAMP. Thanks in advance.

You need to check for errors after you query. See my signature.

 

Why do you have !! in your function there?

 

Edit: I see your second set of code. What does the query look like when you echo it? Echo the query string, not the result object.

You need to check for errors after you query. See my signature.

 

Why do you have !! in your function there?

 

Edit: I see your second set of code. What does the query look like when you echo it? Echo the query string, not the result object.

echo 'Query string: '.'SELECT `userid` FROM `login` WHERE `userid` = \''.$userName.'\'';

gives

Query string: SELECT `userid` FROM `login` WHERE `userid` = 'NewName'

!! - ridiculous.

 

$result will be false if the query fails due to an error. A query returning no rows is not an error, it just means there were no records matching the criteria

If no rows match I want the function to return true.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.