php - 注册后如何将新创建的用户的用户ID存储在 session 变量中

标签 php mysql sql database

我在从 MySql 表的 userid 列获取值并将其存储在 session 中时遇到问题。

这是问题的详细信息:

我有一个包含许多表的数据库,但现在让我们考虑 2 个表。

表名登录:

| userid | username | password

表名称person_details:

| firstname | lastname | dob

除此之外,我有(考虑)2 个页面,其中有 2 个表格(每页 1 个);

一个用于登录,另一个用于登录后的详细信息。

我的 person_details 表的 useridlogin 表的外键。

我想要的是当用户注册时,提供的用户名密码应该保存在login表中,并带有唯一的(自动生成的) userid 目前工作正常。*

现在问题出在这部分;当用户注册后,他/她将被定向到 person_details 表单,填写表单后单击提交,数据应保存到 person_details与“登录”表中的“用户 ID”相同

In order to do that I think i have to store the 'userid' in the session variable so that it can be used as a parameter while inserting the value to 'person_details' table but i am not able to pass that value.

这是我的代码:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "login")) {
$insertSQL = sprintf("INSERT INTO secure_login (username, password) VALUES (%s, %s)", GetSQLValueString($_POST['username'], "text"), GetSQLValueString($_POST['password'], "text"));

mysql_select_db($database_mydatabase, $mydatabase);
$Result1 = mysql_query($insertSQL, $mydatabase) or die(mysql_error());
$obj = @mysql_fetch_object($Result1);
$_SESSION['userID']=$obj->userid;

我也尝试过,但没有成功

    mysql_select_db($database_mydatabase, $mydatabase);
$Result1 = mysql_query($insertSQL, $mydatabase) or die(mysql_error());
$_SESSION['userID']=$Result1->userid;

这是我在尝试时遇到的错误:

Cannot add or update a child row: a foreign key constraint fails (`mydatabase`.`personaldetails`, CONSTRAINT `personaldetails_ibfk_2` FOREIGN KEY (`userid`) REFERENCES `secure_login` (`userid`) ON DELETE CASCADE ON UPDATE CASCADE)

我在没有 session 的情况下尝试了它,结果没问题,数据已保存到带有自动生成的userid的表person_details中。

如果您需要更多代码或任何其他信息,请告诉我。

编辑我在 session 变量中获得了用户ID,所以我的问题解决了一半。现在我需要做的就是为 person_details 设置相同的用户 ID。

附注当我在这里发布这个问题时,我期待一个答案,但我得到的只是一些访问和一个为我做一些编辑的人(我认为他非常喜欢,他将我的一些评论编辑为代码)无论如何,谢谢你的 friend 。

最佳答案

你的问题很难理解,你的编辑声称已经解决了一半的问题并没有太多地澄清问题。以下是一些建议:

  1. 停止使用 mysql_ 并开始使用 mysqli_
  2. 我不相信您能够通过插入成功捕获任何项目
  3. 如果要插入的值未按照它们在目标表中出现的确切顺序插入,则需要枚举这些值。

    INSERT INTO person_details(firstname, lastname, dob, userid) VALUES('firstname', 'lastname', 'dob', 'userid');
    

关于php - 注册后如何将新创建的用户的用户ID存储在 session 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19447625/

相关文章:

php - 为什么 Doctrine 使用 WHERE IN 而不是 LIMIT?

mysql - 分布式数据库与否?

php - 计算帖子的平均评分

python - 使用 Python 将文本文件写入 SQL

sql - 有没有办法将 BigQuery 交互式 shell 结果保存到文件中?

php - 用PHP比较两个MySQL表之间的数据

php - 从 MongoDB 获取 Child 类型而不是 parent 类型的对象

php - CakePHP 删除超过 5 天的记录

mysql - 在 MySQL 查询浏览器中执行存储过程,但不执行显示异常,如您的 SQL 语法有错误

mysql - 编写动态代码以将值插入到变量中,变量也是列名