我有一个与 MySQL 集成的 PHP 脚本,用于将 .plist 文件发送到包含两种类型项目(这些项目是歌曲)的 iPhone 应用程序:
- 应该已经在应用程序中显示的项目
- 应该在将来某个时候显示的项目
我使用两个查询和一些 PHP,以所需的顺序抓取过去和未来的项目(我想要每个项目的数量可变),这是完全可行的。不过,主要是因为我找不到或想出一个单一的查询解决方案,我很好奇你们将如何解决这个问题。是否有一个查询可以按我想要的顺序获取行?是否有一个查询以其他顺序获取行?
无论如何,这里的 PHP 和 SQL 会抓取我想要的结果行,并按照我希望它们出现在结果 .plist 中的顺序放置它们。我使用 UNIX 时间戳主要是因为它更容易,所以我希望我不会受到责备——我认为它不会特别影响我的特定问题。
$readbehind = mysql_query(sprintf('SELECT SongID, RemoteSongLocation, SongTitle, UNIX_TIMESTAMP( ScheduledActivationDateTime ) AS ActivateAfterUnixTime FROM `thesongs` WHERE UNIX_TIMESTAMP( ScheduledActivationDateTime ) < UNIX_TIMESTAMP( ) ORDER BY ScheduledActivationDateTime DESC LIMIT 0, %d', MAX_READBEHIND_SONGS));
$readahead = mysql_query(sprintf('SELECT SongID, RemoteSongLocation, SongTitle, UNIX_TIMESTAMP( ScheduledActivationDateTime ) AS ActivateAfterUnixTime FROM `thesongs` WHERE UNIX_TIMESTAMP( ScheduledActivationDateTime ) > UNIX_TIMESTAMP( ) ORDER BY ScheduledActivationDateTime ASC LIMIT 0, %d', MAX_READAHEAD_SONGS));
$songsForClient = array();
while ($row = mysql_fetch_assoc($readbehind)) {
$songsForClient[] = $row;
}
while ($row = mysql_fetch_assoc($readahead)) {
$songsForClient[] = $row;
}