-3

我需要知道从数据库中检索数据的更好方法。例如,在我正在开发的页面中,当我单击检查产品按钮时,该特定产品的 id 被传递到产品页面,例如http://domainname.com/products.php?id=1。显然这是检索数据的不好方法。如何在不使用 ?id=1 的情况下将此 id 值传递给产品页面。

谢谢

4

1 回答 1

3

显然这是检索数据的不好方法

这是完全不真实的。在这种情况下,使用 $_POST 而不是 $_GET 会使纯 URL 无法访问特定产品的页面。如果我想将 id 为 2321 的产品链接分享给我在 facebook 上的朋友怎么办?

看看这个网站,例如 londonperfumeshop.co.uk/diesel-zero-plus-men。我猜的产品是从数据库中检索到的,但没有通过域传递的 id。这是如何在php中完成的?– 用户2257461

这称为URL 重写。基本上,它不是 PHP 特性。它是一个 Web 服务器功能。URL 重写背后的概念是将一种 URL 模式映射到另一种 URL 模式。例如。我要映射

  • products/(.*) -> products.php?alias=$1

如果有人尝试访问以下链接:

  • 产品/url-rewrite-for-dummy
  • 产品/head-first-web-mobile

它将映射到以下链接:

  • products.php?alias=url-rewrite-for-dummy
  • products.php?alias=head-first-web-mobile

所以基本上,它仍然是一个 $_GET。虽然使用别名使您的 URL 看起来更漂亮、更友好,但存在一个小问题。别名可以更改。假设您想重命名您的产品,因此也应该更改别名。它会导致旧链接无效。为了克服这个问题,您可以将别名与 id 结合使用。

  • products/([0-9]+)-(.*) -> products.php?id=$1

如果有人尝试访问以下链接:

  • 产品/1-url-rewrite-for-dummy
  • 产品/2-head-first-web-mobile

它将映射到以下链接:

  • products.php?id=1
  • products.php?id=2

使用ID和别名提高查询速度;并且产品的 ID 将始终保持不变(更改产品 ID 是不常见的)

于 2013-06-09T17:23:41.657 回答