Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PDO和MySQL PHP插入时如何将ID传递到不同的表_Php_Mysql_Pdo - Fatal编程技术网

使用PDO和MySQL PHP插入时如何将ID传递到不同的表

使用PDO和MySQL PHP插入时如何将ID传递到不同的表,php,mysql,pdo,Php,Mysql,Pdo,当学生添加一个新的主题时,我试图将userID从学生表转移到评估表中,这样他们的主题对于他们来说仍然是唯一的 然而,我似乎不能问正确的问题来得到我想要的答案,所以我假设当他们登录时,我必须给他们一个唯一的会话,这就是他们的用户ID 然后我继续添加了一个隐藏的输入,这样当表单提交时,MySQL就会得到那个用户ID,这样就可以添加进去,但是它似乎不起作用* *一切正常,但评估表中的userID字段保持为0 当然有更有效的方法来解决这个问题 下面是我所做的 登录后,我将创建一个会话- $_SESSIO

当学生添加一个新的主题时,我试图将userID从学生表转移到评估表中,这样他们的主题对于他们来说仍然是唯一的

然而,我似乎不能问正确的问题来得到我想要的答案,所以我假设当他们登录时,我必须给他们一个唯一的会话,这就是他们的用户ID

然后我继续添加了一个隐藏的输入,这样当表单提交时,MySQL就会得到那个用户ID,这样就可以添加进去,但是它似乎不起作用*

*一切正常,但评估表中的userID字段保持为0

当然有更有效的方法来解决这个问题

下面是我所做的

登录后,我将创建一个会话-

$_SESSION['userID'] = $_POST['userID']; 
我的PDO+MySQL-

  $assessName = $_POST["assessName"];
  $assessSubject = $_POST['assessSubject'];
  $duedate = $_POST['duedate'];
  $userID = $_POST['userID'];


      $sql = "INSERT INTO assessment (assessName, assessSubject, duedate, userID) VALUES (:assessName, :assessSubject, :duedate, :userID)";
      $statement = $conn->prepare($sql);
      $statement->bindValue(':assessName', $assessName);
      $statement->bindValue(':assessSubject', $assessSubject);
      $statement->bindValue(':duedate', $duedate);
      $statement->bindValue(':userID', $userID);
      $result = $statement->execute();
      $statement->closeCursor();


      header("location: ../view/success.php");
      return $result;
表格-

  <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
                <div class="form-group">
                <label>Assessment Name</label>
                <input type="text" class="form-control" id="assessName" name="assessName" placeholder="Enter Name" required>
                </div>
                <div class="form-group">
                <label>Subject</label>
                  <input type="text" class="form-control" id="assessSubject" name="assessSubject" placeholder="Enter Subject" required>
                <span class="error"><?php echo $Variable_error;?></span>
                </div>
                <div class="form-group">
                  <div class="dateBox">
                <label>Date</label>
                <input type="text" class="form-control" id="datepicker" name="duedate" placeholder="Choose Due Date" autocomplete="off" required>
              </div>
              <input type="hidden" name="userID" value="<?php $_SESSION['userID'] ?> "/>
                </div>
                <input type="submit" name="submit" value="Submit" class="btn btn-primary"></input>

        </form>

所以我的问题摆在我的学生桌上,我需要补充

$_SESSION['uid'] = $result[0]['studentid'];
在使用$count变量之前

$sql = 'SELECT * FROM student WHERE username = :username AND password = :password';
$statement = $conn->prepare($sql);
$statement->bindValue(':username', $username);
$statement->bindValue(':password', $password);
$statement->execute();

$result = $statement->fetchAll();
$_SESSION['uid'] = $result[0]['studentid'];
$statement->closeCursor();
$count = $statement->rowCount();
return $count;

注册时,应为学生提供唯一标识符,即学生编号。这将在整个系统中识别它们。会话变量将在每次登录时更改,不能用于识别学生。“我正在尝试将用户ID从学生表传递到评估表”-“学生”表的代码在哪里?然而,我会在这里尝试猜测;但我认为您可能正在寻找的是
last\u insert\u id()
。如果是这样,并且您没有将两个id列都设置为自动增量,那么如果这就是问题所在,则需要使用此函数。是的,这就是我所做的,是否有方法将唯一标识符携带到不同的table@JackWarren当有人发表评论时,请直接ping某人。这样他们就知道你在谈论“他们”发布的内容。如果你想回答我也说过的话,我也是一样。有点“Stack pro提示”。@FunkFortyNiner很抱歉,从现在开始就可以了,为student表添加了代码,啊,所以我可能应该去掉评估ID,因为它不是必需的,并将用户ID用作主要ID?。。对于评估表,即
$sql = 'SELECT * FROM student WHERE username = :username AND password = :password';
$statement = $conn->prepare($sql);
$statement->bindValue(':username', $username);
$statement->bindValue(':password', $password);
$statement->execute();

$result = $statement->fetchAll();
$_SESSION['uid'] = $result[0]['studentid'];
$statement->closeCursor();
$count = $statement->rowCount();
return $count;