我正在为学校创建一个小项目。我已经能够创建一个函数来完成一个工作查询(使用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;
}
}
发布于 2019-03-12 03:52:43
使用以下语法访问您的字段:
$Tview['tournamentName']
注意:正在尝试获取非对象错误的属性
在没有对象的情况下尝试访问对象的属性时发生。
非对象通知的一个典型示例是
$users = json_decode('[{"name": "hakre"}]');
echo $users->name; # Notice: Trying to get property of non-object
在本例中,$users
是一个数组(所以不是对象),它没有任何属性。
这类似于访问数组中不存在的索引或键(参见Notice: Undefined Index)。
这个例子要简单得多。大多数情况下,这样的通知发出未经检查的返回值的信号,例如,如果对象不存在,则库返回NULL
,或者只是返回意外的非对象值(例如,在Xpath结果中,具有意外格式的JSON结构,具有意外格式的XML等)。但是代码不会检查这种情况。
由于这些非对象通常会被进一步处理,因此在非对象(参见:Fatal error: Call to a member function ... on a non-object)上调用对象方法停止脚本时,通常会发生致命错误。
通过检查错误条件和/或变量是否与预期匹配,可以很容易地防止这种情况。下面是一个带有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;
相关错误:
https://stackoverflow.com/questions/55109030
复制相似问题