【发布时间】:2015-03-15 07:36:33
【问题描述】:
我正在为一位摄影师构建一个网页,该网页包含一堆画廊。
我已将我的页面连接到数据库,我可以从数据库返回我需要的所有内容并将其放置在 Gallery 对象中。
问题出在这里:
该网页应该能够加载所有画廊并为每个画廊创建一个画廊对象。它应该将它放在一个名为画廊的数组中(尽管这部分工作正常)。
接下来,我想通过 getter 从对象中获取数据,但是当我尝试这样做时,出现以下错误:
致命错误:调用未定义的函数 getTitle() C:\xampp\htdocs\index.php 第 21 行'
我被困在这一点上,有没有人有解决方案?
顺便说一句,这是我的代码:
index.php
<?php
// REQUIRED FILES
require_once('PHPclasses/database.class.php');
$database = new Database('localhost','root','','localdatabase');
include('PHPclasses/gallery.class.php');
$results = $database->doQuery("SELECT * FROM gallery");
$galleries = array();
for($i = 0; $i < count($results); $i++) {
$galleries[$i] = new Gallery($i+1, $database);
}
foreach($galleries as $gallery) {
$gallery.getTitle();
}
?>
database.class.php
<?php
/*
* This class contains the connection with the database.
*
* The database connection will be made when instantiating a new database object via 'new Database()'.
* This is done by providing the 4 parameters:
* - server host
* - database user
* - database password
* - database name
*
* The database object can be used to input a query via the doQuery method.
* This method needs the SQL query as a String, It will return an 2D array, being filled with result index as first
* and the database-table contents s second.
*/
class Database
{
// Database connection variables
private $serverhost;
private $username;
private $password;
private $database;
// Database connection itself
private $db_link;
// Query results
private $resultsArray;
public function __construct($host, $user, $pass, $db) {
$this->serverhost = $host;
$this->username = $user;
$this->password = $pass;
$this->database = $db;
// Create connection
$this->db_link = new mysqli(
$this->serverhost,
$this->username,
$this->password,
$this->database
);
// Check for errors in connection
if ($this->db_link->connect_error) {
die("Connection failed: " . $this->db_link->connect_error);
}
}
public function doQuery($query){
$q = $this->db_link->query($query)
or die("Error: ".mysqli_error($this->db_link));
$i = 0;
$resultsArray = array();
while($row = mysqli_fetch_array( $q )) {
$resultsArray[$i] = $row;
$i++;
}
return $resultsArray;
}
}
?>
最后但同样重要的是gallery.class.php
<?php
/*
* This class contains the Gallery
*
* The gallery object is one instance of the complete gallery.
* The ID given in the constructor is the ID within the database,
*
* This row in the database contains all the properties for each object of gallery
*
* All properties set in the constructor can later be obtained via the getters.
*/
class Gallery
{
// location of the gallery folder
private $root;
// descriptive variables
private $title;
private $description;
private $thumb;
private $genre;
private $day;
/**
* Constructor if this class
*
* Takes in an identifier which should be the ID of the gallery in the database
* and an database object, which should be the database which stores all the data
*/
public function __construct($galleryIdentifier, $database) {
$result = $database->doQuery("SELECT * FROM `gallery` WHERE `galleryID` = '{$galleryIdentifier}'");
$this->root = $result[0]["galleryRoot"];
$this->title = $result[0]["title"];
$this->description = $result[0]["description"];
$this->thumb = $result[0]["galleryThumb"];
$this->genre = $result[0]["genre"];
$this->day = $result[0]["galleryRoot"];
}
// list of getters (start)
public function getRoot() {
return $this->root;
}
public function getTitle() {
return $this->title;
}
public function getDescription() {
return $this->description;
}
public function getThumb() {
return $this->thumb;
}
public function getGenre() {
return $this->genre;
}
public function getDate() {
return $this->day;
}
// list of getters (end)
}
?>
【问题讨论】:
-
你有一个拼写错误,正确的是
$gallery->getTitle(); -
感谢您的回复。我编程java半年,搞混了。再次感谢!
-
@BrainFooLong 我不明白为什么人们在 cmets 中发布答案 ;)
-
@Tek 好问题,可能是我自己的错误,或者我有点奇怪。就是这样:)下次写答案时我会记住这一点。
标签: php arrays oop fatal-error