使用last\u insert\u id()将不同的id插入到使用php和mysql的不同表中时

m3eecexj  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(276)

我使用php创建了一个学生注册系统,并创建了一个包含6个表的数据库

student_reg,
academics,
nextofkin,
contacts,
postal,
residential

在剩下的5个表中,student reg的主键用作外键,因此我尝试使用last\u insert \u id()函数检索student reg的主键并将其插入5个表的外键中。它确实会插入到外键中,但问题是它会将正确的id插入到一个表中,但其余的表会收到不同的id。insertanydata用于插入student\ u reg,insert any用于插入其余的表。我做错了什么,错过了什么。这是我的密码

public function insertAnyData($table, $fields = array())
{
    $keys = array_keys($fields);
    $values = null;
    $x = 1;

    foreach ($fields as $field){
        $values .= '?';
        if ($x < count($fields)){
            $values .= ', '; //coma and space
        }
        $x++;
    }
    //die($values);

    $sql = "INSERT INTO {$table} (`".implode('`, `', $keys)."`) VALUES ({$values})";

    if(!$this->query($sql, $fields)->error()){
        return  true;
    }

    //}
    return false;
}

public function insertAny($table, $fields = array())
{
    $keys = array_keys($fields);
    $values = null;
    $x = 1;

    foreach ($fields as $field){
        $values .= '?';
        if ($x < count($fields)){
            $values .= ', '; //coma and space
        }
        $x++;
    }
    //die($values);

    $sql = "SET @last_id_in_student_reg=LAST_INSERT_ID();
             INSERT INTO {$table} (`".implode('`, `', $keys)."`,idstudent_reg) VALUES ({$values},@last_id_in_student_reg)";

    if(!$this->query($sql, $fields)->error()){
        return  true;
    }

    //}
    return false;
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题