php - 如何使用 $_GET ['id' 为用户创建个人资料 URL]

标签 php mysql get

如果我正确地执行了以下步骤,有人可以建议我吗:

当用户想在网站上注册时,register.php 会处理他/她的请求。以下是 register.php 中的部分代码:

$sql="INSERT INTO Members (fldFullName, fldEmail, Password, Gender, DOB)
VALUES
('$fname','$email','$pass', '$gender', '$date')";

特别是当我编写上面的代码时,我对 PHP/MySQL 还是有些陌生,现在仍然是。因此,我通过 phpmyadmin 在表中手动创建了上述所有字段。此外,我还通过 phpmyadmin 手动添加了 ID 字段,作为具有自动递增主键 的第一个字段当然。为什么我手动做的,我不记得原因了。但我很确定这可能是我遇到问题的原因。

我想做的是,当用户在网站上注册时,我想为他/她创建一个个人资料 URL。例如,表中的字段可以命名为 ProfileURL,而实际值可以是 http://www.domain.com/profile.php?id=1 ,其中 id 继承自表中的实际 ID。我怎样才能用我上面的代码做到这一点?当我决定通过 phpmyadmin 手动保存所有字段时,我做错了什么吗?注意:我也一直在通过 phpmyadmin 手动创建表、数据库和字段。然而,它的值当然是自动 INSERTed 的。我走在正确的轨道上吗?

谢谢。

最佳答案

如上所述,您不需要将配置文件 URL 保存到数据库中。我猜所有个人资料 URL 都将遵循某种标准形式(即 www.example.com/profile.php?id=1)?

好吧,如果您将所有这些都保存在数据库中,然后您决定将格式更改为类似 www.example.com/profile/1 的格式,您将拥有数据库中有很多过时的数据。您将不得不遍历每条记录并对其进行更新,这对于包含数百万行的数据库表来说可能很危险。

因此,解决方案是有一个带参数的脚本。说 profile.php。如上所述,您将使用 $_GET 数组中的数据检查配置文件:

<?php
if (isset($_GET['id'])) {
    $id  = mysql_real_escape_string($_GET['id']);
    $sql = "SELECT * FROM members WHERE id = '$id' LIMIT 1";
    $res = mysql_query($sql);
    if (mysql_num_rows() > 0) {
        $member = mysql_fetch_object($res);
        // handle displaying of member's profile here
    }
    else {
        // member does not exist with ID
    }
}
?>

这样,如果您决定更改脚本名称或使用搜索引擎友好的 URL,则无需更改数据库结构。

关于php - 如何使用 $_GET ['id' 为用户创建个人资料 URL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3406659/

相关文章:

php - MySQL 查询只抓取一行而不是多行。为什么?

php - 使用 ajax 时传递给 implode 的参数无效

php - 优化用户兴趣排名算法

php - 在 IE 和 Safari 中提交表单时,Iframed 页面出现 session 过期问题

php - 从 mysql 中获取列名和行数据并创建 json

php - file_get_contents() "failed to open stream: Network is unreachable"有效链接错误

Django:获取url中当前的GET参数并修改其中一个(或多个)

MySQL在一个查询中删除多行,每行唯一的条件

mysql - 使用 Plesk 迁移工具迁移后缺少 MySQL 用户

c++ - std::istream::获得效率