php/mySQL search/mysql_num_rows() error



I'm working on some search engine code from devpapers.com and keep coming up
against an error when testing.

This is the error I get:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
resource in c:\Inetpub\wwwroot\TMP8j9vfrf3s.php on line 36
Couldn't execute query

-------------------------------

These are lines 33 through 36:

$query = "SELECT * FROM links WHERE pageURL LIKE \"%$trimm%\" OR
pageDesc LIKE \"%$trimm%\" OR pageTitle LIKE \"%$trimm%\" ORDER BY pageLink
DESC" ;
// Execute the query to get number of rows that contain search
keywords
$numresults = mysql_query($query);
$row_num_links_main = mysql_num_rows($numresults);

-----------------------------------

I'm guessing it's a simple syntax error and I just can't see it after
looking at it so long, so maybe a different set of eyes will see it.

Chris
----------------
This is the full code (in case you're still reading and need to see the
whole thing):

<?php

require_once('Connections/website.php');

//specify how many results to display per page
$limit = 10;

// Get the search variable from URL
$var = @$_GET['q'] ;
//trim whitespace from the stored variable
$trimmed = trim($var);
//separate key-phrases into keywords
$trimmed_array = explode(" ",$trimmed);
// check for an empty string and display a message.
if ($trimmed == "") {
$resultmsg = "<p>Search Error</p><p>Please enter a search...</p>" ;
}
// check for a search parameter
if (!isset($var)){
$resultmsg = "<p>Search Error</p><p>We don't seem to have a search
parameter! </p>" ;
}
// Build SQL Query for each keyword entered
foreach ($trimmed_array as $trimm){

// EDIT HERE and specify your table and field names for the SQL query
$query = "SELECT * FROM links WHERE pageURL LIKE \"%$trimm%\" OR
pageDesc LIKE \"%$trimm%\" OR pageTitle LIKE \"%$trimm%\" ORDER BY pageLink
DESC" ;
// Execute the query to get number of rows that contain search
keywords
$numresults = mysql_query($query);
$row_num_links_main = mysql_num_rows($numresults);

// next determine if 's' has been passed to script, if not use 0.
// 's' is a variable that gets set as we navigate the search result
pages.
if (empty($s)) {
$s=0;
}
// now let's get results.
$query .= " LIMIT $s,$limit" ;
$numresults = mysql_query ($query) or die ( "Couldn't execute
query" );
$row= mysql_fetch_array ($numresults);

//store record id of every item that contains the keyword in the array
we need to do this to avoid display of duplicate search result.
do{
//EDIT HERE and specify your field name that is primary key
$adid_array[] = $row[ 'pageID' ];
}while( $row= mysql_fetch_array($numresults));
} //end foreach

if($row_num_links_main == 0 && $row_set_num == 0){
$resultmsg = "<p>Search results for:" . $trimmed ."</p><p>Sorry, your
search returned zero results</p>" ;
}
//delete duplicate record id's from the array. To do this we will use
array_unique function
$tmparr = array_unique($adid_array);
$i=0;
foreach ($tmparr as $v) {
$newarr[$i] = $v;
$i++;
}
// now you can display the results returned. But first we will display the
search form on the top of the page
?>

<form action="search.php" method="get" name="search">
<div align="center">
<input name="q" type="text" value=" <?php echo $q; ?> " size="15">
<input name="search" type="submit" value="Search">
</div>
</form>

<?php
// display what the person searched for.
if( isset ($resultmsg)){
echo $resultmsg;
exit();
}else{
echo "Search results for: " . $var;
}

foreach($newarr as $value){

// EDIT HERE and specify your table and field names for the SQL query
$query_value = "SELECT * FROM links WHERE pageID = '$value'";
$num_value=mysql_query ($query_value);
$row_linkcat= mysql_fetch_array ($num_value);
$row_num_links= mysql_num_rows ($num_value);

//now let's make the keywords bold. To do that we will use preg_replace
function.
//EDIT parts of the lines below that have fields names like $row_linkcat[
'field1' ]
//This script assumes you are searching only 3 fields. If you are searching
more fileds make sure that add appropriate line.
$titlehigh = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[
'pageURL' ] );
$linkhigh = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[
'pageDesc' ] );
$linkdesc = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[
'pageTitle' ] );
foreach($trimmed_array as $trimm){
if($trimm != 'b' ){
//IF you added more fields to search make sure to add them below as well.
$titlehigh = preg_replace( "'($trimm)'si" , "<b>\\1</b>" ,
$titlehigh);
$linkhigh = preg_replace( "'($trimm)'si" , "<b>\\1</b>" ,
$linkhigh);
$linkdesc = preg_replace( "'($trimm)'si" , "<b>\\1</b>" ,
$linkdesc);
}
//end highlight
?>
<p>
<?php echo $titlehigh; ?><br>
<?php echo $linkhigh; ?><br>
<?php echo $linkhigh; ?>
</p>

<?php
} //end foreach $trimmed_array
if($row_num_links_main > $limit){
// next we need to do the links to other search result pages
if ($s>=1) { // do not display previous link if 's' is '0'
$prevs=($s-$limit);
echo "<div align='left'><a
href='$PHP_SELF?s=$prevs&q=$var&catid=$catid'>Previous " .$limit.
"</a></div>";
}
// check to see if last page
$slimit =$s+$limit;
if (!($slimit >= $row_num_links_main) && $row_num_links_main!=1) {
// not last page so display next link
$n=$s+$limit;
echo "<div align='right'><a
href='$PHP_SELF?s=$n&q=$var&catid=$catid'>Next " .$limit. "</a></div>";
}
}
} //end foreach $newarr

?>


.



Relevant Pages

  • Re: DB Result Wizard Error
    ... Also noted that one folder, which contains no information can't be deleted, ... >> For instance Equipment Serial Number, Equipment Model Number, Cost Accounting ... >> to display the new equipment information. ... >> is in the table was added to the query. ...
    (microsoft.public.frontpage.programming)
  • RE: Just starting to design a form (or is it a query?)
    ... A Form is used to display the data and allow ... A query can be the record source for a form. ... that match an ID in the Assessment table. ... Now, assuming this is the case, what you need is a form with a sub form. ...
    (microsoft.public.access.gettingstarted)
  • Re: database lookup
    ... the query on the subsequent page, and display the "drill down" data. ... The thing with PHP and MySQL is that you need the user to do an action ... I tried to state that I have the database designed and implemented but I ...
    (alt.php)
  • Re: other table that stores data differently than ADO.Net datatable?
    ... >>> query the database everytime the user does a scroll (or page up/page ... >>> will display the next N records once the user has reached the last ... >>>> We have this huge application that's based on storing tons of data on ... >>>> datatable that stores a better way. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: DB Result Wizard Error
    ... It is the standard message: ... For instance Equipment Serial Number, Equipment Model Number, Cost Accounting ... The actual change made was to the equipment inventory query, ... to display the new equipment information. ...
    (microsoft.public.frontpage.programming)