Dunoon Posted October 1, 2009 Share Posted October 1, 2009 Hi All, I am just starting to learn MySQL and continue to read. The Special Olympics in my area is having a problem with there Mass emailing program and I told them I would at least look at it. When I will the emailing script I get these errors. Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /homepages/0/d252328289/htdocs/admin/include/database.php on line 359 Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /homepages/0/d2523/htdocs/admin/include/database.php on line 348 Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /homepages/0/d2523/htdocs/admin/include/database.php on line 359 Warning: Cannot modify header information - headers already sent by (output started at /homepages/0/d2523/htdocs/admin/include/database.php:359) in /homepages/0/d2523/htdocs/admin/process.php on line 448 I have been googling and have not found an answer yet and would like to know if someone can help me. I will post each offending line of code here: Line 348: $this->num_active_users = mysql_numrows($result); Line 359: $this->num_active_guests = mysql_numrows($result); Line 448 of the process.php file: header("Location: index.php"); I can post more of the code if need be. Also, if you can recommend a really good hands on Learning MySQL, please let me know what it is . Thanks Dunoon Quote Link to comment https://forums.phpfreaks.com/topic/176235-supplied-argument-is-not-a-valid-mysql-result-resource-error/ Share on other sites More sharing options...
MadTechie Posted October 2, 2009 Share Posted October 2, 2009 Well that's probably not the line with the problem this line $this->num_active_users = mysql_numrows($result); is called a line or two after a like that starts like $result = mysql_error( /*something*/); that's probably where the error is.. change that line to $result = mysql_error( /*something*/) or die(mysql_error()); you should get a new error, if you could post that line and the new error it should help *OF COURSE the something is a SQL query Quote Link to comment https://forums.phpfreaks.com/topic/176235-supplied-argument-is-not-a-valid-mysql-result-resource-error/#findComment-928777 Share on other sites More sharing options...
Dunoon Posted October 2, 2009 Author Share Posted October 2, 2009 Madtechie I have looked over the code and didn't see eactly what you were talking about. I am posting the full code here.. I was doing some digging and found out that an email does get sent to the webmaster when there is a error but it does really tell you anything. Sorry, really trying to learn MySQL.. Here is the code: <? /** * Database.php * * The Database class is meant to simplify the task of accessing * information from the website's database. * * Written by: Jpmaster77 a.k.a. The Grandmaster of C++ (GMC) * Last Updated: August 17, 2004 */ include("constants.php"); class MySQLDB { var $connection; //The MySQL database connection var $connection2; //The MySQL database connection var $num_active_users; //Number of active users viewing site var $num_active_guests; //Number of active guests viewing site var $num_members; //Number of signed-up users /* Note: call getNumMembers() to access $num_members! */ /* Class constructor */ function MySQLDB(){ /* Make connection to database */ $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error()); mysql_select_db(DB_NAME, $this->connection) or die(mysql_error()); $this->connection2 = mysql_connect(DB_SERVER2, DB_USER2, DB_PASS2) or die(mysql_error()); mysql_select_db(DB_NAME2, $this->connection2) or die(mysql_error()); /** * Only query database to find out number of members * when getNumMembers() is called for the first time, * until then, default value set. */ $this->num_members = -1; if(TRACK_VISITORS){ /* Calculate number of users at site */ $this->calcNumActiveUsers(); /* Calculate number of guests at site */ $this->calcNumActiveGuests(); } } /** * confirmUserPass - Checks whether or not the given * username is in the database, if so it checks if the * given password is the same password in the database * for that user. If the user doesn't exist or if the * passwords don't match up, it returns an error code * (1 or 2). On success it returns 0. */ function confirmUserPass($username, $password){ /* Add slashes if necessary (for query) */ if(!get_magic_quotes_gpc()) { $username = addslashes($username); } /* Verify that user is in database */ $q = "SELECT password FROM ".TBL_USERS." WHERE username = '$username'"; $result = $this->query($q, $this->connection); if(!$result || (mysql_numrows($result) < 1)){ return 1; //Indicates username failure } /* Retrieve password from result, strip slashes */ $dbarray = mysql_fetch_array($result); $dbarray['password'] = stripslashes($dbarray['password']); $password = stripslashes($password); /* Validate that password is correct */ if($password == $dbarray['password']){ return 0; //Success! Username and password confirmed } else{ return 2; //Indicates password failure } } /** * confirmUserID - Checks whether or not the given * username is in the database, if so it checks if the * given userid is the same userid in the database * for that user. If the user doesn't exist or if the * userids don't match up, it returns an error code * (1 or 2). On success it returns 0. */ function confirmUserID($username, $userid){ /* Add slashes if necessary (for query) */ if(!get_magic_quotes_gpc()) { $username = addslashes($username); } /* Verify that user is in database */ $q = "SELECT userid FROM ".TBL_USERS." WHERE username = '$username'"; $result = $this->query($q, $this->connection); if(!$result || (mysql_numrows($result) < 1)){ return 1; //Indicates username failure } /* Retrieve userid from result, strip slashes */ $dbarray = mysql_fetch_array($result); $dbarray['userid'] = stripslashes($dbarray['userid']); $userid = stripslashes($userid); /* Validate that userid is correct */ if($userid == $dbarray['userid']){ return 0; //Success! Username and userid confirmed } else{ return 2; //Indicates userid invalid } } /** * usernameTaken - Returns true if the username has * been taken by another user, false otherwise. */ function usernameTaken($username){ if(!get_magic_quotes_gpc()){ $username = addslashes($username); } $q = "SELECT username FROM ".TBL_USERS." WHERE username = '$username'"; $result = $this->query($q, $this->connection); return (mysql_numrows($result) > 0); } /** * usernameBanned - Returns true if the username has * been banned by the administrator. */ function usernameBanned($username){ if(!get_magic_quotes_gpc()){ $username = addslashes($username); } $q = "SELECT username FROM ".TBL_BANNED_USERS." WHERE username = '$username'"; $result = $this->query($q, $this->connection); return (mysql_numrows($result) > 0); } /** * addNewUser - Inserts the given (username, password, email) * info into the database. Appropriate user level is set. * Returns true on success, false otherwise. */ function addNewUser($username, $password, $email){ $time = time(); /* If admin sign up, give admin user level */ if(strcasecmp($username, ADMIN_NAME) == 0){ $ulevel = ADMIN_LEVEL; }else{ $ulevel = USER_LEVEL; } $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password', '0', '9', '$email', $time)"; return $this->query($q, $this->connection); } /** * updateUserField - Updates a field, specified by the field * parameter, in the user's row of the database. */ function updateUserField($username, $field, $value){ $q = "UPDATE ".TBL_USERS." SET ".$field." = '$value' WHERE username = '$username'"; return $this->query($q, $this->connection); } function updateSportField($sport, $status, $season){ $q = "UPDATE `Sports` SET `SportStatus` = '$status' , `SportSeason` = '$season' WHERE `SportNumber` = '$sport'"; $result = $this->query($q); if(!$result){ die(mysql_errno($result) . ": " . mysql_error($result)); return false; }else{ return true; } } /** * getUserInfo - Returns the result array from a mysql * query asking for all information stored regarding * the given username. If query fails, NULL is returned. */ function getUserInfo($username){ $q = "SELECT * FROM ".TBL_USERS." WHERE username = '$username'"; $result = $this->query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_array($result); return $dbarray; } /** * getEventInfo - Returns the result array from a mysql * query asking for all information stored regarding * the given event id. If query fails, NULL is returned. */ function getEventInfo($id){ $q = "SELECT * FROM Calendar_Events WHERE EventID = '$id'"; $result = $this->query($q); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_array($result); return $dbarray; } /** * getAthleteInfo - Returns the result array from a mysql * query asking for all information stored regarding * the given athlete id. If query fails, NULL is returned. */ function getAthleteInfo($id){ $q = "SELECT * FROM Athletes WHERE AthleteID = '$id'"; $result = $this->query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_assoc($result); return $dbarray; } function verifyInfo($id,$type){ if($type=='A'){$loc = 'Athletes';}elseif($type=='V'){$loc = 'Volunteers';} $q = "SELECT * FROM ".$loc." WHERE `UID` = '$id'"; $result = $this->query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_num_rows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_assoc($result); return $dbarray; } /** * getVolunteerInfo - Returns the result array from a mysql * query asking for all information stored regarding * the given Volunteer id. If query fails, NULL is returned. */ function getVolunteerInfo($id){ $q = "SELECT * FROM Volunteers WHERE VolunteerID = '$id'"; $result = $this->query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_array($result); return $dbarray; } function getSIFInfo($id){ $q = "SELECT * FROM `SportForms` WHERE `ID` = '$id'"; $result = $this->query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_array($result); return $dbarray; } /** * getPageText - Returns the result array from a mysql * query asking for all information stored regarding * the given page text. If query fails, NULL is returned. */ function getPageText($page, $location){ $q = "SELECT * FROM `Pages` WHERE `PageName` = '".$page."' AND `PageLocation` = '".$location."'"; $result = $this->query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_array($result); return $dbarray; } /** * getSpotlightInfo - Returns the result array from a mysql * query asking for all information stored regarding * the given sport spotlight. If query fails, NULL is returned. */ function getSpotlightInfo($sport){ $q = "SELECT * FROM `Spotlight` WHERE `Sport` = '".$sport."'"; $result = $this->query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_array($result); return $dbarray; } function getCMTInfo($id,$email = 0,$limit = "*"){ if($limit != '*'){$q_limit = " LIMIT ".$limit;} if(isset($email) && $email != '0'){ $q = "SELECT * FROM `CMT` WHERE `EMail` = '".$email."'".$q_limit; }else{ $q = "SELECT * FROM `CMT` WHERE `ID` = '".$id."'".$q_limit; } $result = $this->query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_assoc($result); return $dbarray; } /** * getNumMembers - Returns the number of signed-up users * of the website, banned members not included. The first * time the function is called on page load, the database * is queried, on subsequent calls, the stored result * is returned. This is to improve efficiency, effectively * not querying the database when no call is made. */ function getNumMembers(){ if($this->num_members < 0){ $q = "SELECT * FROM ".TBL_USERS; $result = $this->query($q, $this->connection); $this->num_members = mysql_numrows($result); } return $this->num_members; } /** * calcNumActiveUsers - Finds out how many active users * are viewing site and sets class variable accordingly. */ function calcNumActiveUsers(){ /* Calculate number of users at site */ $q = "SELECT * FROM ".TBL_ACTIVE_USERS; $result = $this->query($q, $this->connection); $this->num_active_users = mysql_numrows($result); } /** * calcNumActiveGuests - Finds out how many active guests * are viewing site and sets class variable accordingly. */ function calcNumActiveGuests(){ /* Calculate number of guests at site */ $q = "SELECT * FROM ".TBL_ACTIVE_GUESTS; $result = $this->query($q, $this->connection); $this->num_active_guests = mysql_numrows($result); } /** * addActiveUser - Updates username's last active timestamp * in the database, and also adds him to the table of * active users, or updates timestamp if already there. */ function addActiveUser($username, $time){ $q = "UPDATE ".TBL_USERS." SET timestamp = '$time' WHERE username = '$username'"; $this->query($q, $this->connection); if(!TRACK_VISITORS) return; $q = "REPLACE INTO ".TBL_ACTIVE_USERS." VALUES ('$username', '$time')"; $this->query($q, $this->connection); $this->calcNumActiveUsers(); } /* addActiveGuest - Adds guest to active guests table */ function addActiveGuest($ip, $time){ if(!TRACK_VISITORS) return; $q = "REPLACE INTO ".TBL_ACTIVE_GUESTS." VALUES ('$ip', '$time')"; $this->query($q, $this->connection); $this->calcNumActiveGuests(); } /* These functions are self explanatory, no need for comments */ /* removeActiveUser */ function removeActiveUser($username){ if(!TRACK_VISITORS) return; $q = "DELETE FROM ".TBL_ACTIVE_USERS." WHERE username = '$username'"; $this->query($q, $this->connection); $this->calcNumActiveUsers(); } /* removeActiveGuest */ function removeActiveGuest($ip){ if(!TRACK_VISITORS) return; $q = "DELETE FROM ".TBL_ACTIVE_GUESTS." WHERE ip = '$ip'"; $this->query($q, $this->connection); $this->calcNumActiveGuests(); } /* removeInactiveUsers */ function removeInactiveUsers(){ if(!TRACK_VISITORS) return; $timeout = time()-USER_TIMEOUT*60; $q = "DELETE FROM ".TBL_ACTIVE_USERS." WHERE timestamp < $timeout"; $this->query($q, $this->connection); $this->calcNumActiveUsers(); } /* removeInactiveGuests */ function removeInactiveGuests(){ if(!TRACK_VISITORS) return; $timeout = time()-GUEST_TIMEOUT*60; $q = "DELETE FROM ".TBL_ACTIVE_GUESTS." WHERE timestamp < $timeout"; $this->query($q, $this->connection); $this->calcNumActiveGuests(); } /** * query - Performs the given query on the database and * returns the result, which may be false, true or a * resource identifier. */ function query($query){ $result = mysql_query($query, $this->connection); if(!$result || mysql_error() != ''){@mail('ster@specialolympiccounty.org','SOAC Error',"Query: ".$query."\r\nMySQL Error: ".mysql_error());} return $result; } function sportdb($query){ $result = mysql_query($query, $this->connection2); if(!$result || mysql_error() != ''){@mail('ster@specialolympiccounty.org','SOAC Error',"Query: ".$query."\r\nMySQL Error: ".mysql_error());} return $result; } }; /* Create database connection */ $database = new MySQLDB; ?> Thanks again for all your help. Quote Link to comment https://forums.phpfreaks.com/topic/176235-supplied-argument-is-not-a-valid-mysql-result-resource-error/#findComment-928788 Share on other sites More sharing options...
MadTechie Posted October 2, 2009 Share Posted October 2, 2009 Ahh little harder as it OOP, change function query($query){ $result = mysql_query($query, $this->connection); if(!$result || mysql_error() != ''){@mail('ster@specialolympiccounty.org','SOAC Error',"Query: ".$query."\r\nMySQL Error: ".mysql_error());} return $result; } to function query($query){ $result = mysql_query($query, $this->connection); if(!$result || mysql_error() != ''){die($query."\r\nMySQL Error: ".mysql_error());} return $result; } and your get a better error funny thing is a mail should be going to ster@... with the error Quote Link to comment https://forums.phpfreaks.com/topic/176235-supplied-argument-is-not-a-valid-mysql-result-resource-error/#findComment-928793 Share on other sites More sharing options...
Dunoon Posted October 2, 2009 Author Share Posted October 2, 2009 Madtechie Ok, I did some digging and the program that is being used is PHP Login System with Admin Features. I checked the emails going to ster@ and they really don't say much. Here are a few: Query: INSERT INTO `ChangeLog` (`Timestamp` , `User` , `Action` , `IP`) VALUES ('1254438650', 'Guest', 'Mass E-Mail Sent: 100', '74.111.141.90') MySQL Error: Query: SELECT * FROM active_guests MySQL Error: A ton of emails like that but doesn't tell the error. Anyway, I decided to do a Mass Email test.. The first time I included everyone in the database and sent the email.. That is when I got the errors. So I decided to send an email to just 3 on the list and it worked fine. This could be a constant connection issue, I am not for sure. Would placing the code you suggested tell me something to that effect? Thanks again. Quote Link to comment https://forums.phpfreaks.com/topic/176235-supplied-argument-is-not-a-valid-mysql-result-resource-error/#findComment-928802 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.