Jump to content

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.

Edited by Jessica

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.
This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.