如何为表中的每一行生成唯一的 URL


How do I generate a unique URL for each row in a table?

我还是PHP和MySQL的新手。我目前正在开发一个随机报价生成器网站。当用户第一次访问或刷新页面时,PHP 代码会从 MySQL 表中获取随机行并回显结果。

如果用户喜欢特定的报价,我希望他/她能够为包含报价的页面添加书签。我相信这需要为每个生成的随机代码提供一个唯一的 URL。我不知道如何使用我目前拥有的代码来做到这一点,并希望得到任何人的帮助。

这是我到目前为止的表格:

+----+-----------+-----------+
| id | quote     | source    |
+----+-----------+-----------+
|  1 | hello     | test1     |
|  2 | world     | test2     |
|  3 | random    | test3     |
+----+-----------+-----------+

这是我到目前为止的代码:

<?php
require('connection.php');
// Last query result stored in sessions superglobal to avoid immediately repeating a random quote
session_start(); 
if (empty($_SESSION['lastresult'])) {
    $_SESSION['lastresult'] = null;
}
$query = "SELECT * FROM `test` WHERE `id` != '%s' ORDER BY RAND() LIMIT 1";
$query =  sprintf($query, mysql_real_escape_string($_SESSION['lastresult']));
$result = mysqli_query($dbc, $query) or die(mysql_error());
if (mysqli_num_rows($result) == 1) {
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        $_SESSION['lastresult'] = $row['id'];
        echo '<p>' . $row['quote'] . '</p>' . '<p>' . $row['source'] . '</p>';
    } 
} else {
    echo '<p>Sorry, there was an error. Please try again by refreshing the page or clicking the query button.</p>';
}
?>   

任何其他代码建议也将不胜感激。

有三种方式浮现在脑海中。

如果页面采用引号 id,则所有这些都要求您实现一个版本,类似于@DanGoodspeed在他的问题评论中建议的版本。

  1. 添加从现有页面到新的 ID 驱动页面的链接,标签为"将此页面添加为书签以返回"。不理想,但非常简单。
  2. 在现有页面中添加一些 JavaScript 以在加载后更新 URL 以包含 id,从而使它看起来好像是另一个。有关详细信息,请参阅此答案修改 URL 而不重新加载页面。
  3. 不要使用您
  4. 现在拥有的页面,而是生成一个新页面(使用您已经编写的大部分内容),该页面返回一个位置重定向标头,其中包含一个包含随机 ID 的 URL。