如果用户是笔记的所有者,如何选择? MYSQL

时间:2018-02-03 20:06:11

标签: mysql pdo

我有2个表:'用户'和'备注'。

我的'用户'MYSQL是:

CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(30) NOT NULL DEFAULT '',
  `email` varchar(50) NOT NULL DEFAULT '',
  `password` varchar(70) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

我的'笔记'MYSQL是:

CREATE TABLE `notes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` text NOT NULL,
  `content` text NOT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

我如何制作,例如“Bob”('用户'中的id为2)是注释“Math”的所有者('notes'中的id为1)?

这是我的SELECT仅用于'笔记':

SELECT title, content FROM notes WHERE id = :id

我的意图是;我希望用户为自己而不是其他人拥有自己的笔记。

2 个答案:

答案 0 :(得分:0)

创建一个名为Note_Owner的表格或类似的表格,其中包含以下字段:

users_id - the id of a user in the users table
notes_id - the id of a note in the notes table

将users_id和notes_id组合为主键。另外,请将notes_id列设为唯一,以便给定的注释不会出现多次。

这被称为"联结表"。

祝你好运。

答案 1 :(得分:0)

在yoru notes table

中添加一列user_id
CREATE TABLE `notes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int 
  `title` text NOT NULL,
  `content` text NOT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

您可以加入用户和备注,例如:

 SELECT a.username, b.title, b.content
  FROM user a 
  INNER JOIN notes a.id = b.user_id
  WHERE a.id = :id

请注意,Bob的id是3,然后在与bob相关的注释中你必须更新user_id = 3