Это беспокоило меня больше недели или двух. Честно говоря, это довольно просто, но почему-то я просто не могу правильно обернуть голову вокруг проблемы.
У меня есть две таблицы:
пользователь
+---------+----------+----------+
| 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
,
хорошо, теперь я понимаю. поэтому я только что обнаружил, что могу использовать 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
так как я могу это сделать, если у меня есть триггер или что-то, что я не знаю, как сделать.
Других решений пока нет …