PDO,如何查看4个不同表中的选定数据,然后使用PHP在网页上查看它

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (37)

我正在为学校创建一个小项目。我已经能够创建一个完成工作查询的函数(使用SQL测试)。

我得到的错误是; 注意:尝试在第34行的E:\ programs \ XAMPP \ htdocs \ Esports \ View \ Tournament.php中获取非对象的属性'tournamentName'。

但是我为他们所有人做到了这一点?不知道为什么。

如果有人可以提供帮助,我将不胜感激。

我的代码如下。

我的DataAccess.php运行查询的函数是;

function getAllTourament()
{
    global $pdo; 
    $statement = $pdo ->prepare (' SELECT tournament.tournamentName,
    tournament.console,
    tournament.no_of_players,
    tournament.prize,
    game.gName,
    sponsors.sponsorName,
    venue.venue_name,
    venue.venue_location,
    venue.venue_date,
    venue.venue_time
FROM tournament, game, sponsors, venue
    WHERE tournament.gameID = game.gameID AND tournament.sponsorID = sponsors.sponsorID AND tournament.venueID = venue.venueID
    ORDER by tournament.tournamentName, console, no_of_players, prize , gName , sponsorName , venue_name,venue_location, venue_date, venue_time');
    $statement->execute();
     $result = $statement;
    return $result;   
}

调节器

    <?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

require_once ("../Model/dataAccess.php");
require_once ("../Model/Game.php");
require_once ("../Model/Tournament.php");
require_once ("../Model/Sponsor.php");
require_once ("../Model/Venue.php");


$allTournament = getAllTourament();
//$allTournament = getAllT(); 

查看Tournament.php

  <?php
require_once ("../Controller/allTournament.php");

?>

<?php
require "header.php";
?>

<main>
     <table>
                <thead>
                    <tr>
                        <th>Tournament Name</th>
                        <th>Console</th>
                        <th>No Of Players</th>
                        <th>Prize</th>
                        <th>Game Name </th>
                        <th>Sponsor Name </th>
                        <th>Venue Name </th>
                        <th>Venue Location </th>
                        <th>Venue Date </th>
                        <th>Venue time </th>
                    </tr>
                </thead>
                <tbody>
                    <tr> <?php foreach ($allTournament as $Tview): ?>
                        <td><?= $Tview-> tournamentName ?> </td> 
                        <td><?= $Tview-> console ?> </td>
                        <td><?= $Tview-> no_of_players ?> </td> 
                        <td><?= $Tview-> prize ?> </td> 
                        <td><?= $Tview-> gName ?> </td>
                        <td><?= $Tview-> sponsorName ?> </td>
                        <td><?= $Tview-> venue_name ?> </td>
                        <td><?= $Tview-> venue_location ?> </td>
                        <td><?= $Tview-> venue_date ?> </td>
                        <td><?= $Tview-> venue_time ?> </td>

                    </tr><?php endforeach ?>

                </tbody>

            </table>
</main>

<?php
require "footer.php";
?>

模特Tournament.php

class Tournament {
   // private $gameId; 
    private $tournamentName;
    private $console;
    private $no_of_players;
    private $prize;



    /* magic getter and setter */

    function __get($name) 
    {
        return $this->$name;
    }

    function __set ($name, $value)
    {
        $this->$name = $value;
    }



}

模型Game.php

class Game {
   // private $gameId; 
    private $gName;
    private $rating;
    private $genre;
    private $price;
    private $date;


    /* magic getter and setter */

    function __get($name) 
    {
        return $this->$name;
    }

    function __set ($name, $value)
    {
        $this->$name = $value;
    }  
}

型号Venue.php

class Venue {
   // private $id; 
    private $venue_name;
    private $venue_location;
    private $venue_time;
    private $venue_date;
    private $venue_seats;



    /* magic getter and setter */

    function __get($name) 
    {
        return $this->$name;
    }

    function __set ($name, $value)
    {
        $this->$name = $value;
    }
}

Sponsor.php

class Sponsor 
{
    private $sponsorName;
    private $sponsorWsite;       
    private $sponsorType;
    private $sponsorLength;
                function __get($name) {
        return $this->$name;
    }

    function __set($name, $value) {
        $this->$name = $value;
    }



}
提问于
用户回答回答于

使用以下语法访问您的字段:

$Tview['tournamentName']

注意:尝试获取非对象错误的属性

当您尝试在没有对象时访问对象的属性时发生。

非对象通知的典型示例是

$users = json_decode('[{"name": "hakre"}]');
echo $users->name; # Notice: Trying to get property of non-object

在这种情况下,$users是一个数组(所以不是一个对象),它没有任何属性。

这类似于访问数组的不存在的索引或键(请参阅注意:未定义的索引)。

这个例子非常简单。大多数情况下,这样的通知表示未经检查的返回值,例如,当库返回时,NULL如果对象不存在或仅返回意外的非对象值(例如,在Xpath结果中,具有意外格式的JSON结构,具有意外格式的XML等)但是代码没有检查这种情况。

由于这些非对象经常被进一步处理,因此在非对象上调用对象方法时,通常会发生致命错误(请参阅:致命错误:调用非对象上的成员函数...)暂停脚本。

通过检查错误条件和/或变量是否符合期望,可以很容易地防止它。这里有一个带有DOMXPath示例的通知:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$divText = $result->item(0)->nodeValue; # Notice: Trying to get property of non-object

问题是访问nodeValue第一个项目的属性(字段),而尚未检查它是否存在于$result集合中。相反,通过将变量分配给代码操作的对象来使代码更加明确是值得的:

$result  = $xpath->query("//*[@id='detail-sections']/div[1]");
$div     = $result->item(0);
$divText = "-/-";
if (is_object($div)) {
    $divText = $div->nodeValue;
}
echo $divText;

相关错误:

扫码关注云+社区

领取腾讯云代金券