Renvoi des valeurs par défaut en cas d'échec des requêtes sur une seule ligne
Lors de l'exécution de requêtes SQL pour récupérer des données spécifiques, il est courant de rencontrer des situations où aucune ligne correspondante existe. Pour éviter de renvoyer des résultats vides, vous souhaiterez peut-être fournir une valeur par défaut.
Considérez l'instruction SQL suivante qui récupère le prochain élément planifié pour un flux :
<code class="sql">SELECT `file` FROM `show`, `schedule` WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP() AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file` ORDER BY `start_time` DESC LIMIT 1</code>
Si aucune ligne correspondante n'est trouvé, cette requête renverra un résultat vide. Cependant, pour garantir que quelque chose soit lu sur le flux en cas d'absence d'éléments planifiés, vous pouvez renvoyer une valeur par défaut à la place.
Une approche pour y parvenir consiste à utiliser la fonction IFNULL ou COALESCE. En encapsulant la requête d'origine dans ces fonctions, vous pouvez spécifier une valeur par défaut qui sera renvoyée si aucune ligne n'est trouvée :
<code class="sql">SELECT COALESCE(`file`, 'default.webm') FROM `show`, `schedule` ...</code>
<code class="sql">SELECT IFNULL(`file`, 'default.webm') FROM `show`, `schedule` ...</code>
Cependant, ces tentatives donneront toujours un résultat vide lorsqu'aucune ligne n'est trouvée :
<code class="sql">SELECT IFNULL(MIN(`file`), 'default.webm') `file` FROM `show`, `schedule` WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP() AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file` ORDER BY `start_time` DESC LIMIT 1</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!