php if else语句:如果有两个函数的结果,则显示数据

时间:2017-05-19 08:11:20

标签: php function if-statement null

我非常感谢您对此代码的一些帮助,因为我无法让它正常工作。

我有两个独立的函数,它们都会检查数据库中的表,以查找从页面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语句,只是发布了包含的内容。有人能告诉我正确的方法吗?提前谢谢。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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

&GT;

答案 2 :(得分:0)

感谢大家花时间回答我的问题。但是,这两个代码都没有在我的网站上运行。我的一个朋友虽然帮助了我,现在正在努力。这是他使用的代码:

<?php

$errors = array_filter(getArtistsBySongId( $id ));

$errors1 = array_filter(getGroupsBySongId( $id ));

if (empty($errors) AND empty($errors1)) {

} else {

    include 'songs/getsongcredits.php';

}

?>