Jump to content

supplied argument is not a valid MySQL result resource error


Dunoon

Recommended Posts

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

 

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

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.

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

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.

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.