这已经困扰我一两个多星期了。老实说,这很简单,但不知怎的,我就是无法正确地解决这个问题。
我有两个表:
用户
<小时/>+---------+----------+----------+
| 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'
);
...没有插入任何内容。我已经在谷歌深处搜索以找到答案,但我对所有这些我尝试过但不起作用的程序感到困惑。我是 MySQL 的新手,我正在使用 phpMyAdmin。
我希望在插入消息
时将主键id
自动插入到表中。这样我就可以知道哪个消息
属于哪个用户
。
最佳答案
好的,我现在明白了。所以我刚刚发现我可以使用lastInsertId从用户表中获取最后插入的id,我可以用它来获取自动递增的id。所以问题的一半已经解决了,这里是代码。
$insert_into_database = $db->prepare("INSERT INTO login(用户名,密码) VALUES('$this->用户名','$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();
我收到此错误。 注意: undefined variable :id 在 C:\xampp\htdocs\sandbox\practice\config.php 第 44 行
那么我该如何做到这一点,我可以有一个触发器或一些我真的不知道该怎么做的东西吗?
关于php - 如何自动填充mysql中的外部身份键列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028880/