如何在mysql中自动填充外部身份密钥列?

时间:2015-10-09 02:21:58

标签: php mysql foreign-keys auto-populate

这一直困扰着我一两个星期。老实说,这很简单,但不知怎的,我只是无法正确地解决问题。

我有两张桌子:

用户

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

1 个答案:

答案 0 :(得分:0)

好的,我现在明白了。所以我刚刚建立了我可以使用lastInsertId从用户表中获取最后一个插入的id,我可以使用它来获取自动增加的id。所以这里已经解决了一半的问题是代码。

$ insert_into_database = $ db-> prepare(“INSERT INTO登录(用户名,密码)VALUES('$ this-> username','$ this-> password')”);

$ insert_into_database->执行();

$ id = $ db-> lastInsertId();

所以我现在得到了,所以基本上问题的一半已经解决了,我现在要做的是将$ id插入子表,这将把每个用户连接到多对多的消息关系。子表位于另一页上,当我执行此操作时,它无效。

$ insert_info_into = $ db-> prepare(“INSERT INTO info(id,message)VALUES('$ id','$ this-> message')”);

$ insert_info_into->执行();

我收到此错误。 注意:未定义的变量:第44行的C:\ xampp \ htdocs \ sandbox \ practice \ config.php中的id

所以我怎么能做到这一点可以让我有一个触发器或者其他我不知道该怎么做的东西。