2013-04-12 109 views
0

我有这样的脚本:警告:mysql_num_rows():提供的参数不是一个有效的MySQL结果资源

<?php 
/** 
* Template Name: search 
* This is the template that displays all pages by default. 
* Please note that this is the WordPress construct of pages 
* and that other 'pages' on your WordPress site will use a 
* different template. 
* 
* @package WordPress 
* @subpackage Twenty_Twelve 
* @since Twenty Twelve 1.0 
*/ 

get_header(); ?> 

    <div id="primary" class="site-content"> 
     <div id="content" role="main"> 

      <?php while (have_posts()) : the_post(); ?> 
       <?php get_template_part('content', 'page'); ?> 
       <?php comments_template('', true); ?> 
      <?php endwhile; // end of the loop. ?> 

     </div><!-- #content --> 

<form name="form" action="search" method="get"> 
    <input type="text" name="q" /> 
    <input type="submit" name="Submit" value="Search" /> 
</form> 

<?php 

    // Get the search variable from URL 

    $var = @$_GET['q'] ; 
    $trimmed = trim($var); //trim whitespace from the stored variable 

// rows to return 
$limit=10; 

// check for an empty string and display a message. 
if ($trimmed == "") 
    { 
    echo "<p>Please enter a search...</p>"; 
    exit; 
    } 

// check for a search parameter 
if (!isset($var)) 
    { 
    echo "<p>We dont seem to have a search parameter!</p>"; 
    exit; 
    } 

//connect to your database ** EDIT REQUIRED HERE ** 
mysql_connect("localhost","",""); //(host, username, password) 

//specify database ** EDIT REQUIRED HERE ** 
mysql_select_db("database") or die("Unable to select database"); //select which database we're using 

// Build SQL Query 
$query = "select * tabled where field like \"%$trimmed%\" 
    order by field"; // EDIT HERE and specify your table and field names for the SQL query 

$numresults=mysql_query($query); 
$numrows=mysql_num_rows($numresults); 

// If we have no results, offer a google search as an alternative 

if ($numrows == 0) 
    { 
    echo "<h4>Results</h4>"; 
    echo "<p>Sorry, your search: &quot;" . $trimmed . "&quot; returned zero results</p>"; 

// google 
echo "<p><a href=\"http://www.google.com/search?q=" 
    . $trimmed . "\" target=\"_blank\" title=\"Look up 
    " . $trimmed . " on Google\">Click here</a> to try the 
    search on google</p>"; 
    } 

// next determine if s has been passed to script, if not use 0 
    if (empty($s)) { 
    $s=0; 
    } 

// get results 
    $query .= " limit $s,$limit"; 
    $result = mysql_query($query) or die("Couldn't execute query"); 

// display what the person searched for 
echo "<p>You searched for: &quot;" . $var . "&quot;</p>"; 

// begin to show results set 
echo "Results"; 
$count = 1 + $s ; 

// now you can display the results returned 
    while ($row= mysql_fetch_array($result)) { 
    $title = $row["1st_field"]; 

    echo "$count.)&nbsp;$title" ; 
    $count++ ; 
    } 

$currPage = (($s/$limit) + 1); 

//break before paging 
    echo "<br />"; 

    // next we need to do the links to other results 
    if ($s>=1) { // bypass PREV link if s is 0 
    $prevs=($s-$limit); 
    print "&nbsp;<a href=\"$PHP_SELF?s=$prevs&q=$var\">&lt;&lt; 
    Prev 10</a>&nbsp&nbsp;"; 
    } 

// calculate number of pages needing links 
    $pages=intval($numrows/$limit); 

// $pages now contains int of pages needed unless there is a remainder from division 

    if ($numrows%$limit) { 
    // has remainder so add one page 
    $pages++; 
    } 

// check to see if last page 
    if (!((($s+$limit)/$limit)==$pages) && $pages!=1) { 

    // not last page so give NEXT link 
    $news=$s+$limit; 

    echo "&nbsp;<a href=\"$PHP_SELF?s=$news&q=$var\">Next 10 &gt;&gt;</a>"; 
    } 

$a = $s + ($limit) ; 
    if ($a > $numrows) { $a = $numrows ; } 
    $b = $s + 1 ; 
    echo "<p>Showing results $b to $a of $numrows</p>"; 

?> 
    </div><!-- #primary --> 

<?php get_sidebar(); ?> 
<?php get_footer(); ?> 

,我得到这个错误,当我去的网页(之前我点击提交)

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource ,line 66 

这是第66行的代码:

$numrows=mysql_num_rows($numresults); 

是否有任何人知道为什么会这样,如果因此请possib助阵乐。

感谢

+0

感谢大家的努力 – BenniMcBeno

+0

有点迟了,但mysql_函数已经死了,因为php 5.5.0所以你应该考虑切换到PDO或mysqli。 – lemondrop

回答

1

尝试改变你的SQL查询是这样的:

$criteria = '%' . mysql_real_escape_string($trimmed) . '%'; 
$query = "select * from tabled where field like '$criteria' order by field"; 
2

的FROM子句在您的SQL查询中缺失:

$query = "select * FROM tabled where field like \"%$trimmed%\" 
    order by field"; 
相关问题