运行mysql查询后,将得到包含数据的列表,格式如下:
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<br> id: ". $row["event_id"]. " - timestamp: ". $row["event_start"]. " " . $row["event_duration"] . "<br>";
}
}基本上,每一行都有三个字段:
event_id | event_start | event_duration现在,我想要实现的是在php中遍历返回的行,并找到一个可以使用event_start时间戳和event_duration放置新事件的地方。我正在寻找的地方必须是免费的,并准备通过它的整个event_id event_duration充满它。
快速示例:假设在数据库中有4个事件:
e1 starts at 1:00:10 and lasts 30 seconds
e2 starts at 1:00:40 and lasts 20 seconds
e3 starts at 1:01:30 and lasts 40 seconds
e4 starts at 1:02:50 and lasts 20 seconds.现在我想插入持续20秒的e5,所以最好的位置是在e2和e3之间,所以在我提供了e5的id和它的持续时间之后,我想收到我可以把它放在哪里的时间戳(在我的示例中是1:01:00)。如何在php中创建这样的循环?
编辑:
返回数据的Select如下所示:
select event_id, event_start, event_duration
from table
where event_start>= 'begin-boundary-time'
and event_start+ event_duration <= 'end-boundary-time'发布于 2015-04-08 15:44:53
如果您真的使用MySQL数据库来存储事件,那么我不会担心循环遍历数据和找到插入的位置。在使用SQL查询中的order语句查看事件时,可以对信息进行排序。这很可能比每次运行PHP循环更快(取决于表上的大小、碎片或索引)。您的插入将更准确,因为它们不会被延迟循环通过以找到一个插槽。
https://stackoverflow.com/questions/29518977
复制相似问题