【问题标题】:How to place MySQL row data in the URL? [closed]如何在 URL 中放置 MySQL 行数据? [关闭]
【发布时间】:2014-04-24 06:04:16
【问题描述】:

我想创建一个动态 PHP 页面,其中每个 MySQL 行都有一个不同的页面。

每个条目都会有一个唯一的标识符,我想将它放在 URL 中,而我不知道该怎么做。

示例:stackoverflow.com(查看 url 中的数字)

【问题讨论】:

  • 这就是所谓的参数。好好搜索:)
  • 你真的应该做你的功课。请先阅读stackoverflow.com/help,然后深入了解一些好的编程教程,购买书籍。祝你好运。
  • 现在给出一个更清晰的例子,这样每个人都知道我的意思,这可以被标记为不是题外话。另外,我希望不要使用 GET 将数据放在那里,因为它是提交表单的页面,我正在处理它,就像我想象的 stackoverflow 工作一样。

标签: php mysql forms dynamic


【解决方案1】:

假设您的数据库连接与 PDO 和 $conn 是您的连接字符串:

$data = $conn->query('SELECT * FROM table');
foreach($data as $row) {
    echo '<a href="page.php?id=' . $row['id'] . '">Page Link</a>';
}

这将显示一个页面链接,其中 id 变量由来自数据库的 id 字段设置。假设没有额外的 WHERE 子句,并且您希望显示数据库中存在整体的所有链接。如果您只想显示一个条目,请在查询中添加一个额外的 WHERE 子句,并将 foreach 重组为一般查询。我认为这是您所要求的,如果不是,我将进行编辑/澄清。希望对您有所帮助!

【讨论】:

  • echo '&lt;a href=\"page.php?id=' . $row['id'] . '"&gt;Page Link&lt;/a&gt;"'; 更改为 echo '&lt;a href="page.php?id=' . $row['id'] . '"&gt;Page Link&lt;/a&gt;'; 否则生成的 URL 将不包含正确的语法。请在发布前测试您的答案;我总是这样做;-)
  • 你编辑了你的答案,但我的 FULL 建议没有;这将失败。我放弃了。
  • 有什么办法可以隐藏 '?id=' 部分,只保留 website.com/idNumber/ 吗?
  • 如果页面存在(website.com/3/ 或 wesite.com/4/),您可以将 echo 语句编辑为: echo '页面链接';这会将目标更改为以 id 为名称的 url。 .htaccess(如果在 apache 上)编辑也将按顺序进行。或者,您可以连接到: echo 'Page Link';如果您无权访问 .htaccess(如果 apache 是 Web 服务器)。
  • 如果之前没有创建过该页面,这会起作用吗?
【解决方案2】:

将表中的一列设置为自动递增的整数(在创建表时使用 AUTO_INCREMENT 参数)。然后,当您向表中插入数据时,不要传递该字段的值,它将为您生成。

该列可能也应该是表的主键,因为它用于唯一标识项目。

这是创建如下表所需的 SQL 类型:

CREATE TABLE animals (
     id INTEGER NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) ENGINE=MyISAM;

然后只需使用 id 列来引用数据 - 典型的查询可能是 SELECT * FROM animals WHERE id = 1;

编辑:我注意到您希望拥有更多人类可读的 URL,例如 /page/1/。这可以使用普通的旧 PHP 来完成,但使用适当的 MVC 框架会使它变得更加容易。

【讨论】:

    猜你喜欢
    • 2014-08-20
    • 2014-03-26
    • 2012-06-09
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 2014-08-10
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多