Как автоматически заполнить столбец внешнего ключа идентификации в MySQL?

Это беспокоило меня больше недели или двух. Честно говоря, это довольно просто, но почему-то я просто не могу правильно обернуть голову вокруг проблемы.

У меня есть две таблицы:

пользователь


+---------+----------+----------+
| user_id | username | password |
+---------+----------+----------+

сообщение


+------------+----+---------+
| message_id | id | message |
+------------+----+---------+

//id(fk)references user_id

Когда я вставляю информацию явно, как это …

INSERT INTO message (id, username) VALUES ( '13', 'a;al;dld;ldladda');

…он вставляется в message стол, но как-то, когда я делаю это (что я и хочу) …

INSERT INTO message(id, username) VALUES (
(SELECT user_id FROM user WHERE username = '$this->username'), '$this->username'
);

…ничего не вставляется. Я искал всю глубину Google, чтобы найти ответ, но меня смущают все эти процедуры, которые я пробовал, но не работает. Я новичок в MySQL, и я использую phpMyAdmin.

Я хочу первичный ключ id автоматически вставляется в таблицу, пока я вставляю message, так что я могу знать, какие message принадлежит к которому user,

0

Решение

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

$ insert_into_database = $ db-> prepare («INSERT INTO login (имя пользователя, пароль) VALUES (‘$ this-> username’, ‘$ this-> password’)»);

$ Insert_into_database-> Execute ();

$ id = $ db-> lastInsertId ();

Итак, я понял, что теперь, в основном, половина проблемы решена, и я хочу вставить этот $ id в дочернюю таблицу, которая соединит каждого пользователя с сообщением в отношениях «многие ко многим». дочерняя таблица находится на другой странице, и когда я делаю это, она не работает.

$ insert_info_into = $ db-> prepare («INSERT INTO info (id, message) VALUES (‘$ id’, ‘$ this-> message’)»);

$ Insert_info_into-> Execute ();

я получаю эту ошибку
Примечание: неопределенная переменная: id в C: \ xampp \ htdocs \ sandbox \ practice \ config.php в строке 44

так как я могу это сделать, если у меня есть триггер или что-то, что я не знаю, как сделать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]