0

我正在使用此功能连接并显示数据库中的值

function display_content($the_id)
{
$result = mysql_query("SELECT * FROM tbl_ADBTAG WHERE bcv = $the_id");
    while($row = mysql_fetch_array($result))
    {
        echo $row['content'];
    }
//mysql_close($con);
}

我评论了mysql_close行,因为我认为如果我关闭数据库连接,我将无法移动下一个和上一个。如果我错了,请纠正我,因为我是 php 和 mysql 的新手。

我实际上正在尝试使用 mysqli,因为在我的另一篇文章中有人说它已被弃用,但是当我使用 mysqli 时我的代码会变得混乱,所以现在我想使用 mysql 完成我的项目并在我有机会查看 mysqli 文档时转移到 mysqli .

现在回到问题,上面的函数是通过表单提交按钮调用的。我实际上有3个按钮。去,上一个,下一个。Go 按钮充当使内容正常的提交按钮。

我现在的目标是能够使用上一个和下一个按钮从数据库的当前行移动上一个和下一个。

知道怎么做吗?

最后,我应该在哪里正确调用 mysql_close() 函数?

谢谢

4

4 回答 4

0

使用限制进行分页:

mysql> select * from actor limit 0,5;
+----------+------------+--------------+---------------------+
| actor_id | first_name | last_name    | last_update         |
+----------+------------+--------------+---------------------+
|        1 | PENELOPE   | GUINESS      | 2006-02-15 04:34:33 |
|        2 | NICK       | WAHLBERG     | 2006-02-15 04:34:33 |
|        3 | ED         | CHASE        | 2006-02-15 04:34:33 |
|        4 | JENNIFER   | DAVIS        | 2006-02-15 04:34:33 |
|        5 | JOHNNY     | LOLLOBRIGIDA | 2006-02-15 04:34:33 |
+----------+------------+--------------+---------------------+
5 rows in set (0.00 sec)
mysql> select * from actor limit 5,5;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update         |
+----------+------------+-----------+---------------------+
|        6 | BETTE      | NICHOLSON | 2006-02-15 04:34:33 |
|        7 | GRACE      | MOSTEL    | 2006-02-15 04:34:33 |
|        8 | MATTHEW    | JOHANSSON | 2006-02-15 04:34:33 |
|        9 | JOE        | SWANK     | 2006-02-15 04:34:33 |
|       10 | CHRISTIAN  | GABLE     | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
5 rows in set (0.00 sec)

mysql> select * from actor limit 10,5;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update         |
+----------+------------+-----------+---------------------+
|       11 | ZERO       | CAGE      | 2006-02-15 04:34:33 |
|       12 | KARL       | BERRY     | 2006-02-15 04:34:33 |
|       13 | UMA        | WOOD      | 2006-02-15 04:34:33 |
|       14 | VIVIEN     | BERGEN    | 2006-02-15 04:34:33 |
|       15 | CUBA       | OLIVIER   | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
5 rows in set (0.00 sec)

其中limit的第一个值是开始,第二个是结果数,在您的代码中,您必须为其提供页码而不是“开始”编号。

示例 2:

mysql> select * from bank;
+------+--------+------+
| id   | amount | bank |
+------+--------+------+
|    1 | 100000 |    1 |
|    2 | 256415 |    2 |
|    3 | 142535 |    1 |
|    1 | 214561 |    2 |
|    2 | 123456 |    1 |
|    1 | 987654 |    2 |
+------+--------+------+
6 rows in set (0.00 sec)

mysql> select * from bank limit 0,2;
+------+--------+------+
| id   | amount | bank |
+------+--------+------+
|    1 | 100000 |    1 |
|    2 | 256415 |    2 |
+------+--------+------+
2 rows in set (0.00 sec)

mysql> select * from bank limit 2,2;
+------+--------+------+
| id   | amount | bank |
+------+--------+------+
|    3 | 142535 |    1 |
|    1 | 214561 |    2 |
+------+--------+------+
2 rows in set (0.00 sec)

mysql> select * from bank limit 4,2;
+------+--------+------+
| id   | amount | bank |
+------+--------+------+
|    2 | 123456 |    1 |
|    1 | 987654 |    2 |
+------+--------+------+
2 rows in set (0.00 sec)
于 2012-06-13T12:21:20.073 回答
0

因为您想要对数据库表中的内容(记录)进行分页。
那么最好的办法就是像这样使用 SQL 的 start 和 limit 结构。

SELECT * FROM tablename WHERE .... LIMIT start_index, number_of_items
WHERE the values are described as below:
    start_index: The value from which to pull the records. The first record is 0
    number_of_items: The maximum number of records to SELECT. e.g. 10 (Note: Phpmyadmin uses 30)

知道了这一点,您将不得不跟踪当前使用的起始索引,以便知道如何拉取NEXTPREVIOUS页面

Example:
Lets assume that we want our start index variable name to be xs, we could code like so:
$start = (isset($_GET["xs"]) and intval($_GET["xs"]) >= 0)? intval($_GET["xs"]):0;
//the first time on the page -- set the default start index
$_SESSION["start_index"] = $start;
//save it anyhow you want to keep track of the current start index
$sql = "SELECT ..... LIMIT $start,25";
..... //stuff to pull your content

请注意,您最好使用<a></a>标签而不是buttonsNEXT链接PREVIOUS
我还有一个小脚本可以在 github 上
处理这个分页的东西 查看文档 wiki
希望这对你有帮助

于 2012-06-13T11:29:57.133 回答
0

如果您想要一个固定列表向后/向前移动,您可以将$result变量移动到会话并使用它来移动。

但是,如果您在单击时想要实时数据,这将不起作用/

于 2012-06-13T11:16:41.463 回答
0

你不需要调用 mysql_close() 因为 php 现在就这样做了。您可以在这种情况下执行此操作,因为每次调用脚本时都会创建 mysql-connection。

在您的情况下,您需要读取数据库中上一个和下一个条目的 ID,并将下一个和上一个按钮的路径设置为此 ID。

于 2012-06-13T11:17:09.293 回答