php - 如何自动填充mysql中的外部身份键列?

标签 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'
);

...没有插入任何内容。我已经在谷歌深处搜索以找到答案,但我对所有这些我尝试过但不起作用的程序感到困惑。我是 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/

相关文章:

MySQL:将多个行值合并到单列中?

php - Silverstripe 仅创建索引但不创建外键

javascript - 如何为javascript方法添加jquery确认对话框

java - Hibernate + MySQL - 如何获得不可猜测的生成 ID?

php - 如何从 MySQL 数据库中提取某个项目的类别和标签?

mysql - Percona XtraDB Cluster 5.6 无法启动

java - 排除显示结果集的 JTable 中包含的外键

mysql - 将外键替换为链接表中的值

PHP 和 SQL : Query for a name using join

php - 使用 Elasticsearch 进行地理搜索