2016-12-01 220 views
1

我正在设计一个简单的博客,首先我读了6条记录(图片+标题),其他人我想读7到10. 为6第一我使用此代码:MySQL选择区域

$sql = "SELECT * FROM blogcontents ORDER BY bid DESC"; 
$result = mysql_query($sql) or die("Error Query [" . $sql . "]"); 
$num_rows = mysql_num_rows($result); 

for ($i = 0; $i < 6; $i++) 
    { 
    $row = mysql_fetch_array($result); 
    echo '<li class="navblog"><a href="blogpage.php?id= ' . $row['bid'] . '"><div class="blogwrap"><img class="img-thumbnail img-responsive bphoto" src="images/blog/' . $row['btimg'] . '" alt="Smiley face" height="200" width="300"><span class="sizeoftitle">' . $row['btitle'] . '</span></div></a></li>'; 
    } 

但我不知道我怎样才能从7到10

enter image description here

+1

请更新到新的MySQL驱动程序 - “mysqli”。 [见这里。](http://stackoverflow.com/questions/548986/mysql-vs-mysqli-when-using-php)它在PHP 5.5中被弃用,并在7.0中被删除 –

回答

0

您可以使用限制和偏移(而不是循环的限制)阅读检索所需 一个行firts选择6行

"SELECT * FROM blogcontents ORDER BY bid DESC limit 6 "; 

和第二选择与其他4行开始形式5(offeset是基于0)

"SELECT * FROM blogcontents ORDER BY bid DESC limit 5,4 "; 

或者第一环路之后retrive其他

while ( $row = mysql_fetch_array($result)) 
    { 
    echo '<li class="navblog"><a href="blogpage.php?id= ' . $row['bid'] . '"><div class="blogwrap"><img class="img-thumbnail img-responsive bphoto" src="images/blog/' . $row['btimg'] . '" alt="Smiley face" height="200" width="300"><span class="sizeoftitle">' . $row['btitle'] . '</span></div></a></li>'; 
} 

基于你代码在评论这应该工作

$sql2 = "SELECT * 
      FROM blogcontents 
      LIMIT 5, 4"; 
      $result2 = mysql_query($sql2) or die("Error Query [" . $sql2 . "]"); 

,你不需要为循环。虽然

while ( $row = mysql_fetch_array($result2)) { 
      echo '<p><a href="blogpage.php?id= ' . $row['bid'] . '">' . $row['btitle'] . '</a></p>'; 
} ?> 
+0

我以前使用过,但它不起作用,在这里你可以看到: $ sql2 =“SELECT * FROM blogcontents LIMIT 4 OFFSET 6”; $ result2 = mysql_query($ sql2)或死(“Error Query [”。$ sql2。“]”); 为($ J = 0; $Ĵ<$ NUM_ROWS-1; $ J ++) \t { \t $行= mysql_fetch_array($ RESULT2); \t echo'

' . $row['btitle'] . '

'; \t} ?> –

+0

您得到的错误是什么.. – scaisEdge

+0

如您在图片中看到的那样,所选记录再次从最新记录中检索!但我只想要剩下的记录... –

0

的result_array()函数将将mysql结果格式化成php数组。

function result_array($sql) 
    { 
     $result = array(); 
     $query = mysql_query($sql) or die("Error: " . mysql_error()); 
     while ($data = mysql_fetch_array($query)) { 
      $result[] = $data; 
     } 
     $rows = count($result); 
     if ($rows) { 
      $total_global_rows = count($result); 
      $total_inner_rows = count($result[0]); 
      $count_total_inner_rows = $total_inner_rows/2; 

      for ($i = 0; $i < $total_global_rows; $i++) { 
       for ($j = 0; $j < $count_total_inner_rows; $j++) { 
        unset($result[$i][$j]); 
       } 
      } 
     } 
     return $result; 
    } 

    $sql = "SELECT * FROM blogcontents ORDER BY bid DESC LIMIT 10"; 

    $blogPosts = result_array($sql); 

    //print till 6th and break the loop 
    foreach ($blogPosts as $key => $row) { 
     echo '<li class="navblog"><a href="blogpage.php?id= ' . $row['bid'] . '"><div class="blogwrap"><img class="img-thumbnail img-responsive bphoto" src="images/blog/' . $row['btimg'] . '" alt="Smiley face" height="200" width="300"><span class="sizeoftitle">' . $row['btitle'] . '</span></div></a></li>'; 
     if ($key > 5) { 
      break; 
     } 
    } 

    //print from 7th to the end 
    foreach ($blogPosts as $key => $row) { 
     if ($key > 5) { 
      echo $row['btitle']; 
     } 
    }