PHP if else 语句:如果存在来自 2 个函数的结果,则显示数据



我真的很感激这段代码的一些帮助,因为我无法让它正常工作。

我有两个单独的函数,它们都根据从页面 URL 获取的 ID 检查数据库中的表中的数据。在显示信息时,我想使用 IF ELSE 语句来检查是否有来自这些函数的结果,如果没有结果,则不发布任何内容,如果有结果,则发布结果。

以下是我的函数:

function getArtistsBySongId($id) {
    $query = "SELECT * FROM `Credit_To_Artist` AS c2a 
    INNER JOIN `Credits` AS cr ON cr.credit_id = c2a.credit_id
    INNER JOIN `Artist` AS a ON a.artist_id = c2a.artist_id
    LEFT OUTER JOIN `Song` AS s ON s.song_id = c2a.song_id
    LEFT OUTER JOIN `Remix` AS r ON r.remix_id = c2a.remix_id
    LEFT OUTER JOIN `Project` AS p ON p.project_id = s.project_id
    WHERE c2a.song_id = $id
    ORDER BY a.artist_name ASC";
    $res = mysql_query($query);
    $artists = Array();
    $artisttoid = Array();
    $songtoid = Array();
    while( $row = mysql_fetch_array($res) ) {
        $artist = $row[artist_name];
        $credit = $row[credit_name];
        $songcr = $row[song_id];
        if(!array_key_exists($artist, $artists) ) {
            $artists[$artist] = Array();
            $artisttoid[$artist] = $row[artist_id];
            $songtoid[$songcr] = $row[song_id];
        }
    $artists[$artist][] = $credit;
    } 
    return array($artists, $artisttoid, $songtoid);
}
function getGroupsBySongId($id) {
    $query = "SELECT * FROM `Credit_To_Artist` AS c2a 
    INNER JOIN `Credits` AS cr ON cr.credit_id = c2a.credit_id
    INNER JOIN `Artist_Group` AS ag ON ag.group_id = c2a.group_id
    LEFT OUTER JOIN `Song` AS s ON s.song_id = c2a.song_id
    LEFT OUTER JOIN `Remix` AS r ON r.remix_id = c2a.remix_id
    LEFT OUTER JOIN `Project` AS p ON p.project_id = s.project_id
    WHERE c2a.song_id = $id
    ORDER BY ag.group_name ASC";
    $res = mysql_query($query);
    $groups = Array();
    $grouptoid = Array();
    $song2id = Array();
    while( $row = mysql_fetch_array($res) ) {
        $group = $row[group_name];
        $credits = $row[credit_name];
        $songcred = $row[song_id];
        if(!array_key_exists($group, $groups) ) {
            $groups[$group] = Array();
            $grouptoid[$group] = $row[group_id];
            $song2id[$songcred] = $row[song_id];
        }
        $groups[$group][] = $credits;
     } 
    return array($groups, $grouptoid, $song2id);
    }

目前我有这个代码:

<?php
if ((getArtistsBySongId($id) != NULL) OR (getGroupsBySongId($id) != NULL)) {
     include 'songs/getsongcredits.php';
}
?>

虽然代码可以显示我的数据,但它似乎忽略了我的 IF 语句,而只是发布包含中的内容。 有人能让我知道正确的方法吗?提前谢谢。

无论查询结果如何,您的两个函数都会返回一个数组。因此,您应该检查从函数返回的结果是否为空。

<?php
if (!empty(getArtistsBySongId($id)) OR !empty(getGroupsBySongId($id))) {
  include 'songs/getsongcredits.php';
}
?>

由于您的两个函数都返回数组,因此我会考虑检查返回的数组的大小。如果您有数据,则数组大小将大于 0,否则为 0。

<?php
$artistsBySongId = count(getArtistsBySongId($id));
$groupsBySongId = count(getGroupsBySongId($id));
if (($artistsBySongId != 0) || ($groupsBySongId != 0)) {
 include 'songs/getsongcredits.php';
}

?>

感谢大家抽出宝贵时间回答我的问题。 但是,这两个代码在我的网站上都不起作用。 我的一个朋友帮助了我,现在它正在工作。 这是他使用的代码:

<?php
$errors = array_filter(getArtistsBySongId( $id ));
$errors1 = array_filter(getGroupsBySongId( $id ));
if (empty($errors) AND empty($errors1)) {
} else {
    include 'songs/getsongcredits.php';
}
?>

相关内容

  • 没有找到相关文章

最新更新