2012-07-30 66 views
-6

可能重复给出:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
Warning: mysql_fetch_* expects parameter 1 to be resource, boolean given errormysql_fetch_array()预计参数1是资源,布尔在选择

我试图从表中选择数据,但得到这个错误信息!!

mysql_fetch_array()预计参数1是资源,布尔我使用分页在PHP实际上是在选择

给...但它工作得很好了简单的查询与仅在单个条件.. 。但在这里......有多个条件,它不工作 完整的代码是:

<?php 
    /* 
     Place code to connect to your DB here. 
    */ 
$con=mysql_connect("localhost","root","password"); 
if(!$con) 
{ 
    die('could not connect:'.mysql_error()); 
} 
mysql_select_db("database",$con); 
    //$page=1; // initialise page 
    $tbl_name="posts";  //your table name 
    // How many adjacent pages should be shown on each side? 
    $adjacents = 3; 
    $query = $_GET['query']; 
    $query = htmlspecialchars($query); 
    $query = mysql_real_escape_string($query); 
    /* 
     First get total number of rows in data table. 
     If you have a WHERE clause in your query, make sure you mirror it here. 
    */ 
    $query = "SELECT COUNT(*) as num FROM posts WHERE status='active' AND ((title LIKE '%".$query."%') OR (content LIKE '%".$query."%'))"; 
    $total_pages = mysql_fetch_array(mysql_query($query)); 
    $total_pages = $total_pages['num']; 

    /* Setup vars for query. */ 
    $targetpage = "index.php"; //your file name (the name of this file) 
    $limit = 20;     //how many items to show per page 
    /*if($_GET['page']="") 
    { 
     $page=2; 
    } 
    else 
    { 
     $page = $_GET['page']; 
    }*/ 
    if(empty($_GET['page'])) 
    { 
    $page=1; 
    } 
    else 
    { 
    $page = $_GET['page']; 
    } 
    if($page) 
     $start = ($page - 1) * $limit;   //first item to display on this page 
    else 
     $start = 0;        //if no page var is given, set start to 0 

    /* Get data. */ 
    $sql = "SELECT*FROM $tbl_name WHERE status='active' AND ((title LIKE '%".$query."%') OR (content LIKE '%".$query."%')) ORDER BY postid DESC LIMIT $start, $limit"; 
    $result = mysql_query($sql); 

    /* Setup page vars for display. */ 
    if ($page == 0) $page = 1;     //if no page var is given, default to 1. 
    $prev = $page - 1;       //previous page is page - 1 
    $next = $page + 1;       //next page is page + 1 
    $lastpage = ceil($total_pages/$limit);  //lastpage is = total pages/items per page, rounded up. 
    $lpm1 = $lastpage - 1;      //last page minus 1 

    /* 
     Now we apply our rules and draw the pagination object. 
     We're actually saving the code to a variable in case we want to draw it more than once. 
    */ 
    $pagination = ""; 
    if($lastpage > 1) 
    { 
     $pagination .= "<div class=\"pagination\">"; 
     //previous button 
     if ($page > 1) 
      $pagination.= "<a href=\"$targetpage?page=$prev\">previous</a>"; 
     else 
      $pagination.= "<span class=\"disabled\">previous</span>"; 

     //pages 
     if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up 
     { 
      for ($counter = 1; $counter <= $lastpage; $counter++) 
      { 
       if ($counter == $page) 
        $pagination.= "<span class=\"current\">$counter</span>"; 
       else 
        $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";     
      } 
     } 
     elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some 
     { 
      //close to beginning; only hide later pages 
      if($page < 1 + ($adjacents * 2))   
      { 
       for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<span class=\"current\">$counter</span>"; 
        else 
         $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";     
       } 
       $pagination.= "..."; 
       $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; 
       $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";  
      } 
      //in middle; hide some front and some back 
      elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) 
      { 
       $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; 
       $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; 
       $pagination.= "..."; 
       for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<span class=\"current\">$counter</span>"; 
        else 
         $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";     
       } 
       $pagination.= "..."; 
       $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; 
       $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";  
      } 
      //close to end; only hide early pages 
      else 
      { 
       $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; 
       $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; 
       $pagination.= "..."; 
       for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) 
       { 
        if ($counter == $page) 
         $pagination.= "<span class=\"current\">$counter</span>"; 
        else 
         $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";     
       } 
      } 

     } 

     //next button 
     if ($page < $counter - 1) 
      $pagination.= "<a href=\"$targetpage?page=$next\">next</a>"; 
     else 
      $pagination.= "<span class=\"disabled\">next</span>"; 
     $pagination.= "</div>\n";  
    } 
?> 

    <?php 
     while($row = mysql_fetch_array($result)) 
      { 

     echo '<br><h3><a href="post.php?postid='.$row['postid'].'">'.$row['title'].'</a></h3>'; 
     echo "<font size=4><br>".substr($row['content'], 0,300)."... </font>"; 
     echo '<a href="post.php?postid='.$row['postid'].'">More details</a><br>'; 

     } 
    ?> 

<?=$pagination?> 

什么问题?

+0

这是一个很好的做法,使用一些异常处理或在使用查询时使用die()。 – 2012-07-30 09:33:04

回答

1

mysql_query返回false上failur

+0

的确如此,所以如果查询失败,在它之后建立或死亡是很方便的。因此,如果它失败,它可能会破坏你的整个页面... – Mathlight 2012-07-30 09:33:47

+1

'死()'不应该用于生产代码。但也许是一个“或抛出异常”在try ... catch块。 – 2012-07-30 09:35:41

+0

为什么不呢?如果它打破了整个页面,则可以使用骰子生成错误并将其发送给您,并包含错误页面。因此,用户看到错误页面,网站的程序员/所有者就会收到一封包含错误的电子邮件,然后他可以查看错误并修复错误... – Mathlight 2012-07-30 09:37:45

0

不知道哪里出错,但你可以尝试做的是财产以后这样的:

$sQuery_select_stuff = " SELECT * FROM stuff WHERE stuff_id = 1"; 
$rResultaat_select_stuff = mysql_query($sQuery_select_stuff) or die(mysql_error()); 
$total_pages = mysql_fetch_array($rResultaat_select_stuff); 
0

回声出你的$ query变量,看是否它你期望它是

$query = $_GET['query']; 
$query = htmlspecialchars($query); 
$query = mysql_real_escape_string($query); 
echo $query; 
相关问题