这困扰了我一两个多星期。老实说,这很简单,但是我无法以某种方式正确地解决问题。

我有两个表:

用户



+---------+----------+----------+
| 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/

10-12 00:02
查看更多