注意:未定义的属性:stdClass :: $ media_type

时间:2014-12-30 20:35:56

标签: php undefined

我目前正在设置我的投资组合,但我不断收到以下错误:

  

注意:未定义的属性:第54行的/Applications/MAMP/htdocs/year_3/Site_2/portfolio/project.php中的stdClass :: $ media_type

     

注意:未定义的属性:第59行的/Applications/MAMP/htdocs/year_3/Site_2/portfolio/project.php中的stdClass :: $ media_type   1.点

     

注意:未定义的属性:第54行的/Applications/MAMP/htdocs/year_3/Site_2/portfolio/project.php中的stdClass :: $ media_type

     

注意:未定义的属性:第59行的/Applications/MAMP/htdocs/year_3/Site_2/portfolio/project.php中的stdClass :: $ media_type

  1. 这是代码:

    $id = $_GET['id'];
    if (!is_numeric($id)) {
        //die('DONT BE A JERK');
        header('Location: index.php');
    }
    
    require_once('includes/config.php');
    require_once('includes/lib.php');
    
    $db = dbConnect();
    
    $query = "
    SELECT projects.* FROM projects
    WHERE projects.id = '$id'
    ";
    
    $project = dbSelect($db, $query);
    $project = $project[0];
    
    
    $query = "
        SELECT media.* FROM media
        WHERE media.project_id = '$project->id'
        ORDER BY media.rank ASC
    ";
    
    $media = dbSelect($db, $query);
    
    $project->media = $media;
    
    dbClose($db);
    
    ?>
    
    <!DOCTYPE html>
    <html>
    <head>
    <title>Missy Skae</title>
    <link rel="stylesheet" href="style.css">
    </head>
    <body>
    
    <h1><?=$project->title;?></h1>
    <h2><?=$project->date;?></h2>
    <p><?=$project->description;?></p>
    
    <?
    foreach($project->media as $media) {
    
        ?>
        <div class="media">
    

    此后的第54行。

            <?
            if ($media->media_type == 'image') {
                ?>
                    <img src="media/<?=$media->filename;?>">
                    <p><?=$media->imagenumber;?></p>
                <?
    
            } elseif ($media->media_type == 'video') {
                // video
            }
            ?>
    
            <p><?=$media->imagedescription;?></p>
        </div>
        <?
    }
    ?>
    
    </body>
    </html>
    

    有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

错:

$query = "
    SELECT media.* FROM media
    WHERE media.project_id = '$project->id'
    ORDER BY media.rank ASC
";

右:

$query = "
    SELECT media.* FROM media
    WHERE media.project_id = '" . $project->id . "'
    ORDER BY media.rank ASC
";

更多:

$project = dbSelect($db, $query);
$project = $project[0];

确保您在此处获得正确的值。 在我看来,没有结果或结果以不同的形式(数组)返回。

header('Location: index.php');

如果您不在其后使用exit;,则脚本会继续执行。

不应使用短打开的标签,默认情况下它们在大多数服务器上都是关闭的:

<?=$media->imagedescription;?>

<?php echo $media->imagedescription; ?>

查看PDO和准备好的陈述。更清洁,更易于维护: - )

答案 1 :(得分:1)

$media->media_type的所有实例更改为$media->mediatype以匹配数据库中的列。那应该可以解决你的问题。我同意@DanFromGermany您应该考虑使用PDO / Prepared Statements与您的数据库进行交互。