如何编写PHP代码一次一个地记录?

And*_*ndi 0 php mysql pagination

所以我是php/mysql的新手.我正在测试一个非常小的数据库(只有10个记录的单个表),因为我只是想学习.

我在php页面上显示以下结果:select*from mytable where city ="atlanta"

它工作..结果显示在我的页面上.现在,我想知道,我怎么能在这条记录下显示"显示下一个结果"的链接,点击它,它只是在我的数据库中拉出一个新页面,其中包含下一个结果?

这需要一个完整的分页脚本还是有一个简单的方法?

谢谢!

shm*_*eps 5

最简单的方法是包含一个整数$_GET变量,即行号+ 1.

<a href="index.php?id=<?php echo ($id + 1) ?>" />
Run Code Online (Sandbox Code Playgroud)

然后,对于PHP脚本,您需要获取值,或使用默认值(0)(如果未提供).

<?php
    if(!isset($_GET['id']))
        $id = 0;
    else
        $id = $_GET['id'];
?>
Run Code Online (Sandbox Code Playgroud)

不要忘记绑定您的整数,这样就无法获得无效结果.在您的情况下,请确保$id不低于0或高于9.简单的东西

    if($id < 0) $id = 0;

    if($id > 9) $id = 9;
Run Code Online (Sandbox Code Playgroud)

应该管用.这在前一个代码示例之后立即发生.

然后为您的查询,只需做

$sql = "select * from mytable where city = 'atlanta' LIMIT {$id}, 1";
Run Code Online (Sandbox Code Playgroud)

请注意LIMIT这里的子句有两个参数.第一个,您当前的$id数字告诉查询从哪里开始查找结果集.第二个参数告诉它应该从一开始就有多少结果.在这种情况下,我们总是想要一个,所以我们将其保留为1.

当然,你应该参数化这个查询,但因为听起来你只是在学习SQL,所以这不是什么大问题.如果这是一个公共站点,你需要.

您还可以使用mysql_num_rows或等效的PDO获取适用行的总数,然后确定是否$id + 1大于总行数(意味着您在最后一条记录上),如果是,则不显示指向下一条记录的链接.

完整的代码

<?php
    if(!isset($_GET['id']))
        $id = 0;
    else
        $id = $_GET['id'];

    if($id < 0) $id = 0;

    if($id > 9) $id = 9;

    $sql = "select * from mytable where city = 'atlanta' LIMIT {$id}, 1";

    $result = mysql_fetch_assoc($sql);
?>

Display your result here

<?php if( ( $id + 1 ) < mysql_num_rows($result) ) :

<a href="index.php?id=<?php echo ($id + 1) ?>" />

<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

  • `$ id =(int)$ _GET ['id'];`来自GEt的铸造整数是一件好事,特别是对初学者来说 (2认同)