mySQL: вставить значения в 2 таблицы с отношением внешнего ключа

0

Я создал 2 таблицы со следующей структурой:

mitarbeiter
==================
maID (PK, AUTO_INCREMENT, NOT NULL)
maAnrede
maName
maVname
maDurchwahl
maEmail
maMobilfunkNr
maKartenanzahl
maFirma

mobilfunkkarten
==============================
mfkID (PK, AUTO_INCREMENT, NOT NULL)
mfkTarif
mfkStatus
mfkKartennr
mfkPin
mfkSuperpin
maID(FK)

Теперь я хочу, чтобы пользователь сети вводил значения в поля формы. После нажатия кнопки "Сохранить" -Button данные будут сохранены в соответствующие 2 таблицы. Мой mySQL-Query выглядит так:

INSERT INTO mitarbeiter,mobilfunkkarten
(maAnrede, maVname, maName, maMobilfunkNr, mfkTarif, maKartenanzahl, mfkStatus, mfkkartennr, mfkPin, mfkSuperpin, maEmail, maFirma) 
VALUES($anrede, $Vorname, $Nachname,.......);

К сожалению, запрос не работает, потому что вы не можете использовать 2 таблицы после команды INSERT, как в моем примере.

Любые решения о том, как это решить? Я просто не могу придумать, как убедиться, что все, что пользователь вводит в поля формы, будет сохранено как 1 набор данных в эти 2 таблицы, то есть новые данные в дочерней таблице "mobilfunkkarten" будут связаны с Номер первичного ключа в родительской таблице "mitarbeiter".

mitarbeiter = работники mobilfunkkarten = карточки для мобильных телефонов (SIM-карты)

  • 0
    Это займет два запроса, потому что вам нужно получить ключ из связанной строки для вставки в родительскую строку. Вы можете сделать это в транзакции, чтобы в случае сбоя вы могли откатить вставку.
  • 0
    Кроме того, обязательно используйте параметризованные запросы с функциями mysqli или PDO, чтобы избежать внедрения SQL и правильно обрабатывать кавычки.
Показать ещё 2 комментария
Теги:
database
insert

1 ответ

0
Лучший ответ

Сначала вставьте сотрудников.

INSERT INTO mitarbeiter
            (maanrede,
             ...)
            VALUES(?,
                   ...);

Затем вставьте SIM-карту. Используйте last_insert_id() чтобы получить идентификатор, созданный для записи сотрудника.

INSERT INTO mobilfunkkarten
            (mfktarif,
             ...,
             maID)
            VALUES (?,
                    ...,
                    last_insert_id());
  • 0
    Этот работал для меня. Большое спасибо! Возможно, вам следует удалить / удалить ненужный код, такой как "maMobilfunkNr, mfkTarif, ...." в своем сообщении, чтобы округлить его.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню