1

嗨,我正在尝试为 mysql 查询创建分页,但它根本不起作用,有人可以告诉我我的错误在哪里吗?到目前为止,这是我的代码。

<?php     

$con=mysqli_connect("localhost","database","password","table");
// Check connection
if (mysqli_connect_errno())
{
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}

if (!$result = mysqli_query($con,"SELECT * FROM table_name"))
{
    die("Error: " . mysqli_error($con));
}
$per_page =5;//define how many games for a page
$count = mysqli_num_rows($result);
$pages = ceil($count/$per_page);

   if(!isset($_GET['page']) || 
   $_GET['page']=="") {
      $page="1";
} else {
  $page=$_GET['page'];
}    $start    = ($page - 1) * $per_page;
    $result = mysqli_query($con,"SELECT * FROM cursos LIMIT $start,$per_page");

这是我列出我的 sql 查询结果的部分

?>

// show results from my sql query 

<?php

while($row = mysqli_fetch_array($result))
{   $id = $row['id'];
?>


// code for next page 

最后这是页面底部的分页链接

//Show page links
for ($i = 1; $i <= $pages; $i++)
{?>
  <li id="<?php echo $i;?>"><a href="cursos.php?c=<?php echo $c;?>&page=<?php echo $i;?>"><?php echo $i;?></a></li>
<?php  } ?>

在迪帕克的建议之后,我现在只得到

//Show page生成假链接 的最终代码 出错注意:未定义变量:D:\xampp\htdocs\cedecap\admin\cursos.php中的 c 在第191
&page=1">1

并且代码//显示页面链接没有显示任何内容。正在工作的页面上的页面现在为 5

4

5 回答 5

3

更改以下行

$result = $result." LIMIT $start,$per_page";

$result = mysqli_query($con,"SELECT * FROM table_name LIMIT $start,$per_page");

编辑

在该行中,您再次$query_count=mysqli_query($con, $result);将结果传递给相同的函数。mysql_query()您可以跳过该行并执行以下操作:

//$query_count=mysqli_query($con, $result); this line is deleted

$per_page =5;//define how many games for a page
$count = mysqli_num_rows($result);
$pages = ceil($count/$per_page);

还要进行以下更改以消除index错误:

if(!isset($_GET['page']) || $_GET['page']=="") {
  $page="1";
} else {
  $page=$_GET['page'];
}

对于未定义的变量$c错误,在设置$page变量后添加以下代码:

if(!isset($_GET['c']) || $_GET['c']=="") {
  $c="some value";
} else {
  $c=$_GET['c'];
}
于 2013-10-03T01:36:05.220 回答
1

很多错误,一开始

mysql_num_rows($query_count);

应该

mysqli_num_rows($query_count);
于 2013-10-03T01:41:40.870 回答
1

您正在使用 mysql_* 命令而不是 mysqli_*

您在几个地方使用它们:

$query_count=mysql_query($result);

$count = mysql_num_rows($query_count);

将这些转换为:

 $query_count=mysqli_query($con, $result);

 $count = mysqli_num_rows($query_count);

除了@deepak 在他的回答中指出的问题。

于 2013-10-03T01:41:44.843 回答
0

看起来您将“LIMIT $start, $per_page”附加到结果对象而不是基本 SQL 语句。尝试将您的查询分配给顶部的变量,然后像这样附加到该变量:

$sql = "SELECT * FROM table_name";
if (!$result = mysqli_query($con,$sql))
{
    die("Error: " . mysqli_error($con));
}

$query_count=mysqli_query($con,$result);

$per_page =5;//define how many games for a page
$count = mysqli_num_rows($query_count);
$pages = ceil($count/$per_page);

if($_GET['page']==""){
    $page="1";
}else{
    $page=$_GET['page'];
}
$start    = ($page - 1) * $per_page;
$result     = mysqli_query($con,$sql." LIMIT $start,$per_page");
于 2013-10-03T01:44:34.827 回答
0

也许这条线是错误的:

$con=mysqli_connect("localhost","database","password","table");

应该是这样的:

$link = mysqli_connect("myhost","myuser","mypassw","mybd");

尝试:

$link = mysqli_connect("localhost","isuposseyouruserisroot","youdatabasepass","nameofyourdatabase") or die("Error " . mysqli_error($link));
于 2013-10-03T01:55:12.980 回答