разные идентификаторы при вставке с использованием last_insert_id () в разные таблицы с использованием PHP и MYSQL - PullRequest
0 голосов
/ 05 июля 2018

Я использую php для создания системы регистрации студентов, и я создал базу данных, которая имеет 6 таблиц

student_reg,
academics,
nextofkin,
contacts,
postal,
residential

и первичный ключ для student_reg используется в качестве внешнего ключа в оставшихся 5 таблицах, поэтому я пытался использовать функцию last_insert_id () для извлечения первичного ключа студента reg и вставьте его во внешний ключ 5 таблиц. он вставляет во внешний ключ, но проблема в том, что он вставляет правильный идентификатор в одну таблицу, а остальные получают другой идентификатор. insertAnyData используется для вставки student_reg, а для вставки 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;
}
...