首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用php / mysql从我的对象/数组中获得正确的信息?

如何使用php / mysql从我的对象/数组中获得正确的信息?
EN

Stack Overflow用户
提问于 2015-01-24 06:19:17
回答 1查看 55关注 0票数 0

我不是编程专家,但我想将我的旧网站设置为新的设计,因此我想重新使用我的旧代码(略微调整)。

使用下面的函数,我可以获得所有的艺术家信息和编写的吉他歌曲。在表格中显示。

但是艺术家信息(aArtist)没有问题,但是歌曲信息不能正常工作。我想我离这里不远了,但是我应该/可以试着让它工作吗?

当打印(var_dump) $aArtist时,我得到了所有的信息,现在管理它是很热门的。

感谢您的所有建议。1月

代码语言:javascript
运行
复制
    function getArtistBySeoName($sSeoName,$sSortColumn,$sSortDirection,$sWhere)
{
    $sWhereAdditions = "";

    if($sWhereAdditions == "" && $sWhere != "")
    {
        $sWhereAdditions = " WHERE ".$sWhere;
    }
    $sSeoName = str_replace("'", "", $sSeoName);
    $sQuery = "SELECT * FROM artist a
    LEFT JOIN artist_info ai ON a.artist_id = ai.artist_info_artist_id
    WHERE artist_seoname = '".$sSeoName."'
    ".$sWhereAdditions." ";

    $oQueryResult = query($sQuery);

    $oArtist = $oQueryResult->fetch_assoc();

    $aSongs = array();
    $sQuery2 = "SELECT s.song_id,s.song_name,a.*,aa.*,st.*,ss.*,d.* FROM song s
    LEFT JOIN song_type st ON s.song_song_type_id = st.song_type_id
    LEFT JOIN song_style ss ON s.song_style_id = ss.song_style_id
    LEFT JOIN song_status sst ON sst.song_id   = s.song_id
    LEFT JOIN artist_album aa ON s.song_album_id = aa.artist_album_id
    LEFT JOIN download d ON s.song_id = d.download_song_id  inner join artist a on a.artist_id=s.song_artist_id
    WHERE s.song_artist_id = ".$oArtist[artist_id]."  and  (sst.status=1 or sst.status=2 or sst.status=3)  ORDER BY ".$sSortColumn." ".$sSortDirection;
    $oQueryResult2 = query($sQuery2);
    $i=0;

    while($oSong = $oQueryResult2->fetch_assoc())
    {
        $i++;
        $aSongs[]=$oSong;
    }

    $oArtist[songs] = $aSongs;

    $aAlbums = array();
    $sQuery3 = "SELECT * FROM artist_album aa
    INNER JOIN song s ON s.song_album_id = aa.artist_album_id
    WHERE s.song_artist_id = ".$oArtist[artist_id]." GROUP BY aa.artist_album_id";
    $oQueryResult3 = query($sQuery3);
    while($oAlbum = $oQueryResult3->fetch_assoc())
    {
        $aAlbums[]=$oAlbum;
    }
    $oArtist[albums] = $aAlbums;

    $aImages = array();
    $sQuery3 = "SELECT * FROM artist_images ai
    WHERE ai.artist_image_artist_id = ".$oArtist[artist_id]." ";
    $oQueryResult3 = query($sQuery3);
    while($oImage = $oQueryResult3->fetch_assoc())
    {
        $aImages[]=$oImage;
    }
    $oArtist[images] = $aImages;

    $oArtist[songscount] = $i;

    return $oArtist;
}
?>


<? 
$sSeoName = $route[2];
$sSortColumn ="song_name";
$sSortDirection="ASC"; 
$sWhere = ""; 

$aArtist = getArtistBySeoName($sSeoName,$sSortColumn,$sSortDirection,$sWhere); 

var_dump($aArtist);

下面是我尝试打印值的代码。这可能就是它出错的地方。

代码语言:javascript
运行
复制
                <?

            foreach($aArtist as $oSong)
            {

                //print $aArtist[song_name];

                switch($oSong[song_type_name])
                {
                    case "CRD":
                        $sPagename = CHORDSPAGE;
                    break;
                    case "TAB":
                        $sPagename = TABPAGE;
                    break;
                    case "BTAB":
                        $sPagename = BTABPAGE;
                    break;
                    case "LYRIC":
                        $sPagename = LYRICSPAGE;
                    break;
                    case "PTB":
                        $sPagename = PTBPAGE;
                    break;
                    case "GPR":
                        $sPagename = GPRPAGE;
                    break;
                } 

?>

代码语言:javascript
运行
复制
            <tr>
                    <td><span itemprop="name"><a href="/<?=$sPagename?>/<?=$oSong[artist_seoname]?>/<?=$oSong[song_seoname]?>"><? echo ucwords($oSong->song_name);?></a><span><meta itemprop="url" content ="http://www.gitaartabs.nl/<?=$sPagename?>/<?=$oSong[artist_seoname]?>/<?=$oSong[song_seoname]?>"><meta itemprop="duration" content="PT2M30S"></td>
                    <td class=""><?=ucfirst($oSong[song_type_name])?></td>
                    <td class="hidden-sm"><?=ucfirst($oSong[artist_album_name])?></td>
                    <td class="hidden-sm"><?=ucfirst($oSong[artist_album_year])?></td>
                    <td class="hidden-sm"><?=ucfirst($oSong[song_style_name])?></td>
                    <td><em><?=ucfirst($oSong[download_amount])?></em></td>
                    <td><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i></td>
                </tr>
代码语言:javascript
运行
复制
            </tbody>
        </table>
        <!--End Basic Table-->  
EN

回答 1

Stack Overflow用户

发布于 2015-03-17 05:49:46

我通过使用foreach(歌曲作为songval) {}代码修复了这个问题

感谢所有人的帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28119663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档