gettingherdone Posted January 14, 2013 Share Posted January 14, 2013 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. Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/ Share on other sites More sharing options...
Jessica Posted January 14, 2013 Share Posted January 14, 2013 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. Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405682 Share on other sites More sharing options...
Barand Posted January 14, 2013 Share Posted January 14, 2013 !! - 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 Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405688 Share on other sites More sharing options...
Jessica Posted January 14, 2013 Share Posted January 14, 2013 Maybe it's the fever, I can't follow the logic. Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405689 Share on other sites More sharing options...
gettingherdone Posted January 14, 2013 Author Share Posted January 14, 2013 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' Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405691 Share on other sites More sharing options...
gettingherdone Posted January 14, 2013 Author Share Posted January 14, 2013 !! - 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. Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405693 Share on other sites More sharing options...
Jessica Posted January 14, 2013 Share Posted January 14, 2013 So why did you put two of them?? Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405694 Share on other sites More sharing options...
gettingherdone Posted January 14, 2013 Author Share Posted January 14, 2013 So why did you put two of them?? The !! is there because someone told me it will cast to a boolean. I'm not sure if this works but I'm open to any ideas. Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405699 Share on other sites More sharing options...
Jessica Posted January 14, 2013 Share Posted January 14, 2013 Look in the manual. !! Is for or in a comparison. ! Is not. Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405700 Share on other sites More sharing options...
Barand Posted January 14, 2013 Share Posted January 14, 2013 function isUnique($userName, $link) { $result = mysqli_query($link, 'SELECT `userid` FROM `login` WHERE `userid` = \''.$userName.'\'')); return mysqli_num_rows($result) == 0; } Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405702 Share on other sites More sharing options...
gettingherdone Posted January 14, 2013 Author Share Posted January 14, 2013 Aha! Thanks! It works! Link to comment https://forums.phpfreaks.com/topic/273160-problem-with-retrieving-results-from-mysql-query/#findComment-1405704 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.