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 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 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('[email protected]','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('[email protected]','SOAC Error',"Query: ".$query."\r\nMySQL Error: ".mysql_error());} return $result; } }; /* Create database connection */ $database = new MySQLDB; ?> Thanks again for all your help. 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('[email protected]','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 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. 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
Archived
This topic is now archived and is closed to further replies.