在sql查询后检查结果是否为未定义变量

时间:2013-05-03 15:30:45

标签: php mysql

我制作了一个带播放列表的音频播放器(php,MySql,html5)

工作正常。

当曲目结束时,播放器会自动加载(使用ajax)下一曲目。

所以我有一个SQL查询来知道下一个轨道ID(轨道列表按日期排序)。

没关系,但是当玩家读取最后一首曲目时,sql查询找不到下一个id(因为它不存在,之前没有跟踪日期的曲目)。

所以我想这样做:检查我的结果是否为空,如果它为null,我用第一个id定义了我的var。 但它不起作用。我总是有一个未定义的变量。

我试过了 isset,empty,is_null

这是我的代码:

$next_id = $bdd->prepare('
SELECT id
FROM site_decouvrir 
WHERE publish = 1 AND date_publication < :date_publication 
ORDER BY date_publication DESC LIMIT 1');

$next_id->execute(array('date_publication' => $date_publication));

while ($donnees_2 = $next_id->fetch())
{
    // This part is ok untill i reach the last track
    if (isset($donnees_2['id'])) {
        $id_next_track = $donnees_2['id'];
    } else {
        // This part is not executed, when $donnees_2['id'] is null
        $id_next_track = $id_premier_morceau;
    }
}

你能给我一些建议吗?

1 个答案:

答案 0 :(得分:1)

你的while循环将处理它。虽然语句$donnees_2 = $next_id->fetch()为真,但在查询成功时,循环运行。因此,将有一个id参数,您的if语句将被执行。

当语句失败时,while循环退出,并且永远不会执行else块。

如果要设置参数,请在while循环后执行