这困扰了我一两个多星期。老实说,这很简单,但是我无法以某种方式正确地解决问题。
我有两个表:
用户
+---------+----------+----------+
| 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从用户表中获取最后插入的ID,该表可用于获取自动递增的ID。所以一半的问题已经解决了,这里是代码。
$ insert_into_database = $ db-> prepare(“ INSERT INTO login(username,password)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();
我收到此错误。
注意:未定义的变量:第44行的C:\ xampp \ htdocs \ sandbox \ practice \ config.php中的id
所以我该怎么办?我可以有一个扳机或一些我真的不知道该怎么做的东西。
关于php - 如何在mysql中自动填充外来身份 key 列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33028880/