如果我正确地执行了以下步骤,有人可以建议我吗:
当用户想在网站上注册时,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 手动创建表、数据库和字段。然而,它的值当然是自动 INSERT
ed 的。我走在正确的轨道上吗?
谢谢。
最佳答案
如上所述,您不需要将配置文件 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/