存储和调用单个列的时间戳(或常规数据)

时间:2013-11-04 13:26:38

标签: php mysql timestamp

我对编程很新,所以我希望这个问题有一个简单的解决方案。我在发帖前搜索了一个答案,但我不确定我在寻找什么。

基本上,我有一个具有以下结构的数据库:

Table: things
Column 1- ID
Column 2- Name
Column 3- Year
Column 4- Timestamps

我有许多格式为hh:mm:ss的 thing 的大量时间戳,我想将它们存储在things表的第4列中。表中的每个项目都有不同数量的时间戳,所以我认为将它们全部存储在用逗号分隔的单个列中是有意义的(hh:mm:ss,hh:mm:ss)而不是将每个时间戳存储在自己的列中。从这里开始,我希望使用PHP我可以选择 thing 的名称并调用其年份和时间戳,将每个时间戳分隔为自己的变量。

示例:

Column 2- Thing20
Column 3- 1997
Column 4- 00:01:24,00:05:28,00:16:52

$name = "Thing20"
$year = 1997
$ts1 = "00:01:24"
$ts2 = "00:05:28"
$ts3 = "00:16:52"

以下是我的问题......

  1. 这是否符合我的需求?我遇到了麻烦 想着更好的方法来做这件事......
  2. 我如何分隔时间戳(分开的时间戳) 通过数据库条目中的逗号)并将它们存储为增量 变量?相反,我想你会使用一个数组而不是很多 变量
  3. 任何帮助都将非常感谢。正如我上面所说的,我是初学者,所以如果这是一个微不足道的问题我很抱歉!

    谢谢!

2 个答案:

答案 0 :(得分:0)

我不会试图回答你的方法的优点。 在实际操作中,您可以使用explode将字符串拆分为数组:

// where $col4 = "00:01:24,00:05:28,00:16:52"
$tsarray=explode(',',$col4);
// $tsarray = array("00:01:24","00:05:28","00:16:52");

然后,将数组元素分配给各个变量的方法很多且各不相同。 欢呼声。

答案 1 :(得分:0)

设计问题

如果每个ID需要n个值,那么不应将其存储在单个列中,而应将其拆分为两个表。

表1:东西(ID,名称,年份),其中ID是主键

表2:时间戳(ID,时间戳),其中ID是来自'事物的外键。并且您可以根据需要存储任意数量的ID,时间戳对(以及时间戳是单个值)

因此,在您的示例中,表1将如下所示:

ID, Name, Year
1, Thing20, 1997

表2将如下所示:

ID, timestamp
1, 00:01:24
1, 00:05:28
1, 00:16:52

实用解决方案

但是,如果不改变DB结构,那么您可以使用:

$ts = explode(',', $timestamp);

您将收到$ ts变量

中所有时间戳的数组