在mysql数据库中存储未知大小的数组

时间:2015-12-13 12:04:42

标签: php mysql database

您好我在mysql数据库中有一个日期时间值(2015-01-01 12-54-32),我用它来了解图书馆订阅者预订图书的日期,很容易在数据库中存储一个日期时间值但是问题是我不知道订户将从图书馆保留多少本书可能是1或可能是5,问题是如何将其作为数组存储在数据库中?

3 个答案:

答案 0 :(得分:0)

如果你真的想在一个字段中存储多本书,你可以在每次存储时对数组进行json_encode,然后在从数据库中选择它时再次对它进行json_decode。

但更好的方法是创建一个book_subscribe表,您可以在其中存储每个订阅者的任意数量。

答案 1 :(得分:0)

使用serializeunserialize来隐藏数组并将其添加到数据库列中。您的问题让我觉得您有数据库设计问题。看一对多的关系(例如,一个客户,几本书)

答案 2 :(得分:0)

将其存储在数据库中的正确方法是使用联结表。像这样:

create table BookReservations (
    BookReservationId int auto_increment primary key,
    SubscriberId int not null,
    BookId int not null,
    ReservationDate date not null,
    constraint fk_bookreservations_subscriberid foreign key (SubscriberId) references Subscribers(SubscriberId),
    constraint fk_bookreservations_bookid foreign key (BookId) references Books(BookId)
);

(显然,这只是建议问题中未提及的实体和列的名称。)

请注意,此表定义表之间的外键关系以及存储数据。这允许数据库确保关系完整性。 MySQL(目前)不允许对字符串或JSON对象进行此类定义。