runnerjp Posted November 22, 2007 Share Posted November 22, 2007 hey guys getting this error from login script Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/runningp/public_html/lib/connection.php on line 131 2 questions what does it mean not vailed result how do i fix it lol code is function RecordCount ( $query ) { return mysql_num_rows ( mysql_query ( $query ) ); <--- this is the line its saying is in correct :S } long winded version of the code follows can any 1 help <? // ================================================================== // Author: Justin Vincent (justin@visunet.ie) // Web: http://www.justinvincent.com // Name: ezSQL // Desc: Class to make it very easy to deal with mySQL database connections. // ================================================================== // ezSQL Constants define("EZSQL_VERSION","1.01"); define("OBJECT","OBJECT",true); define("ARRAY_A","ARRAY_A",true); define("ARRAY_N","ARRAY_N",true); // ================================================================== // The Main Class class db { // ================================================================== // DB Constructor - connects to the server and selects a database function db($dbuser, $dbpassword, $dbname, $dbhost) { $this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword); if ( ! $this->dbh ) { $this->print_error("<ol><b>Error establishing a database connection!</b><li>Are you sure you have the correct user/password?<li>Are you sure that you have typed the correct hostname?<li>Are you sure that the database server is running?</ol>"); } $this->select($dbname); } // ================================================================== // Select a DB (if another one needs to be selected) function select($db) { if ( !@mysql_select_db($db,$this->dbh)) { $this->print_error("<ol><b>Error selecting database <u>$db</u>!</b><li>Are you sure it exists?<li>Are you sure there is a valid database connection?</ol>"); } } // ================================================================== // Print SQL/DB error. function print_error($str = "") { if ( !$str ) $str = mysql_error(); // If there is an error then take note of it print "<blockquote><font face=arial size=2 color=ff0000>"; print "<b>SQL/DB Error --</b> "; print "[<font color=000077>$str</font>]"; print "</font></blockquote>"; } // ================================================================== // Basic Query - see docs for more detail function query($query, $output = OBJECT) { // Log how the function was called $this->func_call = "\$db->query(\"$query\", $output)"; // Kill this $this->last_result = null; $this->col_info = null; // Keep track of the last query for debug.. $this->last_query = $query; // Perform the query via std mysql_query function.. $this->result = mysql_query($query,$this->dbh); if ( mysql_error() ) { // If there is an error then take note of it.. $this->print_error(); return FALSE; } else { // In other words if this was a select statement.. if ( $this->result ) { // ======================================================= // Take note of column info $i=0; while ($i < @mysql_num_fields($this->result)) { $this->col_info[$i] = @mysql_fetch_field($this->result); $i++; } // ======================================================= // Store Query Results $i=0; while ( $row = @mysql_fetch_object($this->result) ) { // Store relults as an objects within main array $this->last_result[$i] = $row; $i++; } @mysql_free_result($this->result); } return TRUE; } } // ================================================================== // function RecordCount ( $query ) { return mysql_num_rows ( mysql_query ( $query ) ); } // ================================================================== // function Mresult ( $query, $a, $b ) { return mysql_result ( mysql_query ( $query ), $a, $b ); } /** * Correctly quotes a string so that all strings are escape coded. * * @param string the string to quote * @param [magic_quotes] if $s is GET/POST var, set to get_magic_quotes_gpc(). */ function qstr ( $string, $magic_quotes = false ) { if (!$magic_quotes) { if (strnatcmp(PHP_VERSION, '4.3.0') >= 0) { return "'" . mysql_real_escape_string($string) . "'"; } $string = str_replace("'", "\\'" , str_replace('\\', '\\\\', str_replace("\0", "\\\0", $string))); return "'" . $string . "'"; } return "'" . str_replace('\\"', '"', $string) . "'"; } // ================================================================== // Get one variable from the DB - see docs for more detail function get_var($query=null,$x=0,$y=0) { // Log how the function was called $this->func_call = "\$db->get_var(\"$query\",$x,$y)"; // If there is a query then perform it if not then use cached results.. if ( $query ) { $this->query($query); } // Extract var out of cached results based x,y vals if ( $this->last_result[$y] ) { $values = array_values(get_object_vars($this->last_result[$y])); } // If there is a value return it else return null return $values[$x]?$values[$x]:null; } // ================================================================== // Get one row from the DB - see docs for more detail function getRow($query=null,$y=0,$output=OBJECT) { // Log how the function was called $this->func_call = "\$db->getRow(\"$query\",$y,$output)"; // If there is a query then perform it if not then use cached results.. if ( $query ) { $this->query($query); } // If the output is an object then return object using the row offset.. if ( $output == OBJECT ) { return $this->last_result[$y]?$this->last_result[$y]:null; } // If the output is an associative array then return row as such.. elseif ( $output == ARRAY_A ) { return $this->last_result[$y]?get_object_vars($this->last_result[$y]):null; } // If the output is an numerical array then return row as such.. elseif ( $output == ARRAY_N ) { return $this->last_result[$y]?array_values(get_object_vars($this->last_result[$y])):null; } // If invalid output type was specified.. else { $this->print_error(" \$db->getRow(string query,int offset,output type) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N "); } } // ================================================================== // Function to get 1 column from the cached result set based in X index // se docs for usage and info function get_col($query=null,$x=0) { // If there is a query then perform it if not then use cached results.. if ( $query ) { $this->query($query); } // Extract the column values for ( $i=0; $i < count($this->last_result); $i++ ) { $new_array[$i] = $this->get_var(null,$x,$i); } return $new_array; } // ================================================================== // Return the the query as a result set - see docs for more details function get_results($query=null, $output = OBJECT) { // Log how the function was called $this->func_call = "\$db->get_results(\"$query\", $output)"; // If there is a query then perform it if not then use cached results.. if ( $query ) { $this->query($query); } // Send back array of objects. Each row is an object if ( $output == OBJECT ) { return $this->last_result; } elseif ( $output == ARRAY_A || $output == ARRAY_N ) { if ( $this->last_result ) { $i=0; foreach( $this->last_result as $row ) { $new_array[$i] = get_object_vars($row); if ( $output == ARRAY_N ) { $new_array[$i] = array_values($new_array[$i]); } $i++; } return $new_array; } else { return null; } } } // ================================================================== // Function to get column meta data info pertaining to the last query // see docs for more info and usage function get_col_info($info_type="name",$col_offset=-1) { if ( $this->col_info ) { if ( $col_offset == -1 ) { $i=0; foreach($this->col_info as $col ) { $new_array[$i] = $col->{$info_type}; $i++; } return $new_array; } else { return $this->col_info[$col_offset]->{$info_type}; } } } // ================================================================== // Dumps the contents of any input variable to screen in a nicely // formatted and easy to understand way - any type: Object, Var or Array function vardump($mixed) { echo "<blockquote><font color=000090>"; echo "<pre><font face=arial>"; if ( ! $this->vardump_called ) { echo "<font color=800080><b>ezSQL</b> (v".EZSQL_VERSION.") <b>Variable Dump..</b></font>\n\n"; } print_r($mixed); echo "\n\n<b>Last Query:</b> ".($this->last_query?$this->last_query:"NULL")."\n"; echo "<b>Last Function Call:</b> " . ($this->func_call?$this->func_call:"None")."\n"; echo "<b>Last Rows Returned:</b> ".count($this->last_result)."\n"; echo "</font></pre></font></blockquote>"; echo "\n<hr size=1 noshade color=dddddd>"; $this->vardump_called = true; } // Alias for the above function function dumpvars($mixed) { $this->vardump($mixed); } // ================================================================== // Displays the last query string that was sent to the database & a // table listing results (if there were any). // (abstracted into a seperate file to save server overhead). function debug() { echo "<blockquote>"; // Only show ezSQL credits once.. if ( ! $this->debug_called ) { echo "<font color=800080 face=arial size=2><b>ezSQL</b> (v".EZSQL_VERSION.") <b>Debug..</b></font><p>\n"; } echo "<font face=arial size=2 color=000099><b>Query --</b> "; echo "[<font color=000000><b>$this->last_query</b></font>]</font><p>"; echo "<font face=arial size=2 color=000099><b>Query Result..</b></font>"; echo "<blockquote>"; if ( $this->col_info ) { // ===================================================== // Results top rows echo "<table cellpadding=5 cellspacing=1 bgcolor=555555>"; echo "<tr bgcolor=eeeeee><td nowrap valign=bottom><font color=555599 face=arial size=2><b>(row)</b></font></td>"; for ( $i=0; $i < count($this->col_info); $i++ ) { echo "<td nowrap align=left valign=top><font size=1 color=555599 face=arial>{$this->col_info[$i]->type} {$this->col_info[$i]->max_length}<br><font size=2><b>{$this->col_info[$i]->name}</b></font></td>"; } echo "</tr>"; // ====================================================== // print main results if ( $this->last_result ) { $i=0; foreach ( $this->get_results(null,ARRAY_N) as $one_row ) { $i++; echo "<tr bgcolor=ffffff><td bgcolor=eeeeee nowrap align=middle><font size=2 color=555599 face=arial>$i</font></td>"; foreach ( $one_row as $item ) { echo "<td nowrap><font face=arial size=2>$item</font></td>"; } echo "</tr>"; } } // if last result else { echo "<tr bgcolor=ffffff><td colspan=".(count($this->col_info)+1)."><font face=arial size=2>No Results</font></td></tr>"; } echo "</table>"; } // if col_info else { echo "<font face=arial size=2>No Results</font>"; } echo "</blockquote></blockquote><hr noshade color=dddddd size=1>"; $this->debug_called = true; } } ?> Quote Link to comment Share on other sites More sharing options...
revraz Posted November 22, 2007 Share Posted November 22, 2007 I've had functions error out because of spaces. Change return mysql_num_rows ( mysql_query ( $query ) ); to return mysql_num_rows(mysql_query( $query)); If that doesn't work, post your $query= line. Quote Link to comment Share on other sites More sharing options...
teng84 Posted November 22, 2007 Share Posted November 22, 2007 your passing a parameter that is not a resource do this function RecordCount ( $query ) { $q= mysql_query ( $query ) or die (mysql_error()); return mysql_num_rows ( $q ); } then tell us what happen Quote Link to comment Share on other sites More sharing options...
runnerjp Posted November 22, 2007 Author Share Posted November 22, 2007 ahh it worked.... what did i do wrong i dont get it lol better learn from mistake Quote Link to comment Share on other sites More sharing options...
trq Posted November 22, 2007 Share Posted November 22, 2007 You didn't check your query succeeded before attempting to use its result for starters. Don't chain function calls together like you did, it makes debugging very difficult. <?php function RecordCount($query) { if ($result = mysql_query($query)) { return mysql_num_rows($result); } } ?> Quote Link to comment Share on other sites More sharing options...
runnerjp Posted November 22, 2007 Author Share Posted November 22, 2007 thanks guys Quote Link to comment 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.