Php 如何在一个数据库行中保存多个值

Php 如何在一个数据库行中保存多个值,php,sql,database,rows,Php,Sql,Database,Rows,我制作了一个表格,允许用户通过选择时间、持续时间和两个房间中的一个来预订房间。当预订房间时,表格将显示房间已预订,但这发生在1次预订之后,我希望20名用户能够在1:00预订房间 这是我认为我需要改变的地方,但不确定 $sql = " CREATE TABLE IF NOT EXISTS table_list ( id int(11) NOT NULL AUTO_INCREMENT, title varchar(255) NOT NULL, status int(11) NOT NULL, PRI

我制作了一个表格,允许用户通过选择时间、持续时间和两个房间中的一个来预订房间。当预订房间时,表格将显示房间已预订,但这发生在1次预订之后,我希望20名用户能够在1:00预订房间

这是我认为我需要改变的地方,但不确定

$sql = "
CREATE TABLE IF NOT EXISTS table_list (
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
status int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";
dbDelta( $sql );

$sql= "INSERT INTO table_list (id, title, status) VALUES
(1, 'Room 1', 0),
(2, 'Room 2', 0);";
dbDelta( $sql );

我如何设置它,以便让多个用户同时预订同一个房间?

您需要将其分为三个表,并使用一对多关系处理您的问题。您需要一个“房间”表,它只包含一个ID号和一些关于房间的简要信息(就像您在这里看到的,一个名称和ID就可以了)。您将需要第二个表作为“用户”…就像文件室一样,这将为每个用户保存一个ID字段以及您认为合适的关于该用户的一些信息。然后,您就有了一个bookings表,其中存储了一长行“room\u id、user\u id、datetime\u booked”。bookings表中的每一行表示一次预订。如果您需要额外的功能,还可以添加诸如“持续时间”(可能是开始日期和结束日期,以允许灵活的预订长度)或“人数”之类的内容

用户信息实际上不必存储在单独的表中……“预订”可以包含用户信息,但每次用户创建预订时,您都会将其用户信息恢复到数据库中(冗余行)。用户表消除了这种数据冗余,并将其替换为ID列


希望您能看到这种设置是如何工作的……对表规范化和一对多关系如何工作进行一些研究(堆栈溢出是一个很好的资源)。

我想您想在这里看看一些表设计(您自己对StackExchange进行一些研究)……您很可能需要三个表,一个用来保存房间信息(就像你在这里一样),一个是有用户信息,然后是一个“预订”表,其中包含房间id和用户id以及预订信息,如时间/持续时间。我有点困惑,为什么您希望20个用户能够同时预订。我对创建数据库非常陌生。房间的可用性就像一个会议室,20个用户可以预订到1号房间20人可以预订2号房间