【问题标题】:Get id after insert and save it as value into another table插入后获取id并将其作为值保存到另一个表中
【发布时间】:2016-02-25 17:18:42
【问题描述】:

我正在编写一个应用程序,但我现在遇到了问题。
当我使用应用程序注册新学生时,会在我的 php 脚本上运行一个查询并将新学生插入我的数据库中。

我现在要做的是,当我注册他时,我希望我的 php 脚本运行多个查询,以便所有其他表都应该用 NULL 填充,并且查询应该从 ID新创建的学生将其与其他表(外键)链接。

我用mysqli_multiple_queryLAST_INSERT_ID() 尝试过,但都不起作用。

如何从我的插入中获取该 id 作为回报?

这是我的 php 脚本。

<?PHP

    if ($_SERVER['REQUEST_METHOD']=='POST') {
        $Name     = $_POST['Name'];
        $Surname  = $_POST['Surname'];
        $Street   = $_POST['Street'];
        $Hometown = $_POST['Hometown'];

        if ($Name == '' || $Surname == '' || $Street== '' || $Hometown == '') {
            echo 'please fill all values';
        } else {
            require_once('dbConnect.php');

            $sql  = "INSERT INTO T_Student(Name,Surname,Street,Hometown) VALUES('$Name','$Surname','$Street','$Hometown')";
            $sql .= "INSERT INTO T_University(ID, Teacher, Subject , Classroom, F_ID_Student) VALUES ("","","","","",LAST_INSERT_ID())";


            if(mysqli_multi_query($con,$sql)){
                echo 'successfully registered';
            } else {
                echo 'oops! Please try again!';
            }
        }
        mysqli_close($con);
    }
    echo "Data Inserted";
?>

我希望有人可以帮助我。

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    不要连接这两个查询。执行第一个,将最后一个id保存到一个变量中

    $id = mysqli_insert_id();
    

    ,然后执行引用值之间的变量的第二个查询。

    请注意,如果这些$_POST 变量来自用户提交的表单,那么在将它们保存到数据库之前对其进行一些验证会很有用。也许this 的答案会是一个很好的阅读;)

    【讨论】:

      【解决方案2】:

      我已经修改了你的代码。试试看它是否适合你。

      <?php
      
          if ($_SERVER['REQUEST_METHOD']=='POST') {
              $Name     = $_POST['Name'];
              $Surname  = $_POST['Surname'];
              $Street   = $_POST['Street'];
              $Hometown = $_POST['Hometown'];
      
              if ($Name == '' || $Surname == '' || $Street== '' || $Hometown == '') {
                  echo 'please fill all values';
              } else {
                  require_once('dbConnect.php');
      
                  $sql = "INSERT INTO T_Student(Name,Surname,Street,Hometown)VALUES('$Name','$Surname','$Street','$Hometown')";
                  mysqli_query($con, $sql);
      
                  $id = mysqli_insert_id($con);
      
                  if ($id) {
                      $sql = "INSERT INTO T_University(ID, Teacher, Subject , Classroom, F_ID_Student) VALUES (NULL, NULL, NULL, NULL, NULL, $id)";
                      mysqli_query($con, $sql);
                  }
              }
              mysqli_close($con);
          }
          echo "Data Inserted";
      ?>
      

      【讨论】:

      • 你有别的想法吗?
      • 首先,尝试检查是否返回了id。如果是,那么问题出在您的表结构上。
      猜你喜欢
      • 2021-08-25
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2015-07-21
      • 1970-01-01
      • 2015-05-30
      相关资源
      最近更新 更多