PHP MySQL авто-вставка внешнего ключа - PullRequest
1 голос
/ 22 июля 2011

Так что в основном я пытаюсь сделать, когда пользователь моего сайта создает новую учетную запись на нашей странице регистрации, я хотел бы получить первичный ключ из только что созданной строки таблицы User (таблица базовой информации, электронная почта,пароль и т. д.) для вставки в новую строку таблицы профиля (более подробные сведения, обо мне, отображаемое имя и т. д.)

Я хотел бы сделать это на PHP, и любая помощь будетоценили.

Ответы [ 4 ]

2 голосов
/ 22 июля 2011

Если делать это «в php» на самом деле не требуется, то вы можете использовать встроенный механизм запуска MySQL для этого обновления.

Триггеры заставляют что-то происходить ПОСЛЕ или ДО события (INSERT, UPDATE, DELETE)

Таким образом, ваш триггер будет:

CREATE TRIGGER thistrigger AFTER INSERT
ON User FOR EACH ROW
UPDATE PROFILE SET "whatever"

На триггерах: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

2 голосов
/ 22 июля 2011

если вы используете mysqli посмотрите на: http://www.php.net/manual/en/mysqli.insert-id.php

Получить идентификатор после первой вставки, а затем использовать его при следующей вставке.

0 голосов
/ 22 июля 2011

Если вы используете базу данных mysql, вы можете в качестве альтернативы сделать еще один запрос из php со следующим запросом:

"SELECT LAST_INSERT_ID ();"

Подробнее об этом здесь:http://www.jpgtutorials.com/mysql-last_insert_id-function

Это зависит от соединения.Одновременные вставки из разных соединений не влияют на текущее соединение.

0 голосов
/ 22 июля 2011

Я думаю, что в MySQL нет действительно элегантного способа, в основном потому, что INSERT ничего не возвращает. PostgreSQL допускает предложение INSERT ... RETURNING, но это расширение.

Тем не менее, если вы используете функции mysql_* в PHP, вы можете использовать mysql_insert_id , что может быть достаточно для ваших нужд (т. Е. Если ваш первичный ключ - AUTO INCREMENT целое число).

...