Ir para conteúdo
  • Cadastre-se

[Erro] [Urgente]Gesior dando erro depois de restart na base de dados


Posts Recomendados

Meu site estava trabalhando muito bem até que tive de eliminar minha base de dados e adicionei novamente a mesma base de dados, mas vazia obviamente.

 

Erro : 

Fatal error: Call to a member function fetch() on a non-object in C:\xampp\htdocs\classes\account.php on line 33

debug:

Query:	SELECT `id`, `name`, `password`, `premdays`, `lastday`, `email`, `key`, `create_ip`, `creation`, `premium_points`, `page_access`, `location`, `rlname`, `email_new`, `email_new_time`, `email_code`, `next_email`, `last_post`, `flag` FROM `accounts` WHERE `name` = '12345679'
SQLSTATE:	42S22
Driver code:	1054
Error message:	Unknown column 'creation' in 'field list'

Fatal error: Call to a member function fetch() on a non-object in C:\xampp\htdocs\classes\account.php on line 33 

 

account.php

<?php
if(!defined('INITIALIZED'))
	exit;

class Account extends ObjectData
{
	const LOADTYPE_ID = 'id';
	const LOADTYPE_NAME = 'name';
	const LOADTYPE_MAIL = 'email';
	public static $table = 'accounts';
	public $data = array('name' => null, 'password' => null, 'premdays' => null, 'lastday' => null, 'email' => null, 'key' => null, 'group_id' => null, 'create_ip' => null, 'create_date' => null, 'premium_points' => null, 'page_access' => null, 'location' => null, 'rlname' => null, 'email_new' => null, 'email_new_time' => null, 'email_code' => null, 'next_email' => null, 'last_post' => null, 'flag' => null);
	public static $fields = array('id', 'name', 'password', 'premdays', 'lastday', 'email', 'key', 'group_id', 'create_ip', 'create_date', 'premium_points', 'page_access', 'location', 'rlname', 'email_new', 'email_new_time', 'email_code', 'next_email', 'last_post', 'flag');
	public $players;
	public $playerRanks;
	public $guildAccess;
	public $bans;

    public function __construct($search_text = null, $search_by = self::LOADTYPE_ID)
    {
		if($search_text != null)
			$this->load($search_text, $search_by);
    }

	public function load($search_text, $search_by = self::LOADTYPE_ID)
	{
		if(in_array($search_by, self::$fields))
			$search_string = $this->getDatabaseHandler()->fieldName($search_by) . ' = ' . $this->getDatabaseHandler()->quote($search_text);
		else
			new Error_Critic('', 'Wrong Account search_by type.');
		$fieldsArray = array();
		foreach(self::$fields as $fieldName)
			$fieldsArray[$fieldName] = $this->getDatabaseHandler()->fieldName($fieldName);
		$this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string)->fetch();
	}

	public function loadById($id)
	{
		$this->load($id, 'id');
	}

	public function loadByName($name)
	{
		$this->load($name, 'name');
	}

	public function loadByEmail($mail)
	{
		$this->load($mail, 'email');
	}

	public function save($forceInsert = false)
	{
		if(!isset($this->data['id']) || $forceInsert)
		{
			$keys = array();
			$values = array();
			foreach(self::$fields as $key)
				if($key != 'id')
				{
					$keys[] = $this->getDatabaseHandler()->fieldName($key);
					$values[] = $this->getDatabaseHandler()->quote($this->data[$key]);
				}
			$this->getDatabaseHandler()->query('INSERT INTO ' . $this->getDatabaseHandler()->tableName(self::$table) . ' (' . implode(', ', $keys) . ') VALUES (' . implode(', ', $values) . ')');
			$this->setID($this->getDatabaseHandler()->lastInsertId());
		}
		else
		{
			$updates = array();
			foreach(self::$fields as $key)
				if($key != 'id')
					$updates[] = $this->getDatabaseHandler()->fieldName($key) . ' = ' . $this->getDatabaseHandler()->quote($this->data[$key]);
			$this->getDatabaseHandler()->query('UPDATE ' . $this->getDatabaseHandler()->tableName(self::$table) . ' SET ' . implode(', ', $updates) . ' WHERE ' . $this->getDatabaseHandler()->fieldName('id') . ' = ' . $this->getDatabaseHandler()->quote($this->data['id']));
		}
	}

	public function getPlayers($forceReload = false)
	{
		if(!isset($this->players) || $forceReload)
		{
			$this->players = new DatabaseList('Player');
			$this->players->setFilter(new SQL_Filter(new SQL_Field('account_id'), SQL_Filter::EQUAL, $this->getID()));
			$this->players->addOrder(new SQL_Order(new SQL_Field('name')));
		}
		return $this->players;
	}

	public function getGuildRanks($forceReload = false)
	{
		if(!isset($this->playerRanks) || $forceReload)
		{
			$this->playerRanks = new DatabaseList('AccountGuildRank');
			$filterAccount = new SQL_Filter(new SQL_Field('account_id', 'players'), SQL_Filter::EQUAL, $this->getID());
			$filterPlayer = new SQL_Filter(new SQL_Field('rank_id', 'players'), SQL_Filter::EQUAL, new SQL_Field('id', 'guild_ranks'));
			$filterGuild = new SQL_Filter(new SQL_Field('guild_id', 'guild_ranks'), SQL_Filter::EQUAL, new SQL_Field('id', 'guilds'));
			$filter = new SQL_Filter($filterAccount, SQL_Filter::CRITERIUM_AND, $filterPlayer);
			$filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, $filterGuild);
			$this->playerRanks->setFilter($filter);
		}
		return $this->playerRanks;
	}

	public function loadGuildAccess($forceReload = false)
	{
		if(!isset($this->guildAccess) || $forceReload)
		{
			$this->guildAccess = array();
			foreach($this->getGuildRanks($forceReload) as $rank)
				if($rank->getOwnerID() == $rank->getPlayerID())
					$this->guildAccess[$rank->getGuildID()] = Guild::LEVEL_OWNER;
				elseif(!isset($this->guildAccess[$rank->getGuildID()]) || $rank->getLevel() > $this->guildAccess[$rank->getGuildID()])
					$this->guildAccess[$rank->getGuildID()] = $rank->getLevel();
		}
	}

	public function isInGuild($guildId, $forceReload = false)
	{
		$this->loadGuildAccess($forceReload);
		return isset($this->guildAccess[$guildId]);
	}

	public function getGuildLevel($guildId, $forceReload = false)
	{
		$this->loadGuildAccess($forceReload);
		if(isset($this->guildAccess[$guildId]))
			return $this->guildAccess[$guildId];
		else
			return 0;
	}

	public function unban()
	{
		$bans = new DatabaseList('Ban');
		$filterType = new SQL_Filter(new SQL_Field('type'), SQL_Filter::EQUAL, Ban::TYPE_ACCOUNT);
		$filterValue = new SQL_Filter(new SQL_Field('value'), SQL_Filter::EQUAL, $this->data['id']);
		$filterActive = new SQL_Filter(new SQL_Field('active'), SQL_Filter::EQUAL, 1);
		$filter = new SQL_Filter($filterType, SQL_Filter::CRITERIUM_AND, $filterValue);
		$filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, $filterActive);
		$bans->setFilter($filter);
		foreach($bans as $ban)
		{
			$ban->setActive(0);
			$ban->save();
		}
	}

	public function loadBans($forceReload = false)
	{
		if(!isset($this->bans) || $forceReload)
		{
			$this->bans = new DatabaseList('Ban');
			$filterType = new SQL_Filter(new SQL_Field('type'), SQL_Filter::EQUAL, Ban::TYPE_ACCOUNT);
			$filterValue = new SQL_Filter(new SQL_Field('value'), SQL_Filter::EQUAL, $this->data['id']);
			$filterActive = new SQL_Filter(new SQL_Field('active'), SQL_Filter::EQUAL, 1);
			$filter = new SQL_Filter($filterType, SQL_Filter::CRITERIUM_AND, $filterValue);
			$filter = new SQL_Filter($filter, SQL_Filter::CRITERIUM_AND, $filterActive);
			$this->bans->setFilter($filter);
		}
	}

	public function isBanned($forceReload = false)
	{
		$this->loadBans($forceReload);
		$isBanned = false;
		foreach($this->bans as $ban)
		{
			if($ban->getExpires() <= 0 || $ban->getExpires() > time())
				$isBanned = true;
		}
		return $isBanned;
	}

	public function getBanTime($forceReload = false)
	{
		$this->loadBans($forceReload);
		$lastExpires = 0;
		foreach($bans as $ban)
		{
			if($ban->getExpires() <= 0)
			{
				$lastExpires = 0;
				break;
			}
			if($ban->getExpires() > time() && $ban->getExpires() > $lastExpires)
				$lastExpires = $ban->getExpires();
		}
		return $lastExpires;
	}

    public function delete()
    {
        $this->getDatabaseHandler()->query('DELETE FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $this->getDatabaseHandler()->fieldName('id') . ' = ' . $this->getDatabaseHandler()->quote($this->data['id']));

        unset($this->data['id']);
    }

	public function setID($value){$this->data['id'] = $value;}
	public function getID(){return $this->data['id'];}
	public function setName($value){$this->data['name'] = $value;}
	public function getName(){return $this->data['name'];}
	public function setPassword($value)
	{
		$this->data['password'] = Website::encryptPassword($value, $this);
	}
	public function getPassword(){return $this->data['password'];}
	public function setPremDays($value){$this->data['premdays'] = $value;}
	public function getPremDays(){return $this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday']));}
	public function setLastDay($value){$this->data['lastday'] = $value;}
	public function getLastDay(){return $this->data['lastday'];}
	public function setMail($value){$this->data['email'] = $value;}
	public function getMail(){return $this->data['email'];}
	public function setKey($value){$this->data['key'] = $value;}
	public function getKey(){return $this->data['key'];}
	public function setGroupID($value){$this->data['group_id'] = $value;}
	public function getGroupID(){return $this->data['group_id'];}
/*
 * Custom AAC fields
 * create_ip , INT, default 0
 * create_date , INT, default 0
 * premium_points , INT, default 0
 * page_access, INT, default 0
 * location, VARCHAR(255), default ''
 * rlname, VARCHAR(255), default ''
*/
	public function setCreateIP($value){$this->data['create_ip'] = $value;}
	public function getCreateIP(){return $this->data['create_ip'];}
	public function setCreateDate($value){$this->data['create_date'] = $value;}
	public function getCreateDate(){return $this->data['create_date'];}
	public function setPremiumPoints($value){$this->data['premium_points'] = $value;}
	public function getPremiumPoints(){return $this->data['premium_points'];}
	public function setPageAccess($value){$this->data['page_access'] = $value;}
	public function getPageAccess(){return $this->data['page_access'];}
	
	public function setLocation($value){$this->data['location'] = $value;}
	public function getLocation(){return $this->data['location'];}
	public function setRLName($value){$this->data['rlname'] = $value;}
	public function getRLName(){return $this->data['rlname'];}
	public function setFlag($value){$this->data['flag'] = $value;}
	public function getFlag(){return $this->data['flag'];}
/*
 * for compability with old scripts
*/
	public function getGroup(){return $this->getGroupID();}
	public function setGroup($value){$this->setGroupID($value);}
	public function getEMail(){return $this->getMail();}
	public function setEMail($value){$this->setMail($value);}
	public function getPlayersList(){return $this->getPlayers();}
	public function getGuildAccess($guildID){return $this->getGuildLevel($guildID);}

	public function isValidPassword($password)
	{
		return ($this->data['password'] == Website::encryptPassword($password, $this));
	}

	public function find($name){$this->loadByName($name);}
	public function findByEmail($email){$this->loadByEmail($email);}
	public function isPremium(){return ($this->getPremDays() > 0);}
	public function getLastLogin(){return $this->getLastDay();}
} 

Editado por mikkas70 (veja o histórico de edições)

TibiaServers.org | A sua nova lista de servidores de Tibia

[url=https://tibiaservers.org/server/evolution-ot][img]https://tibiaservers.org/dynamic_banners/76-ankrahmun.png[/img][/url]

Link para o post
Compartilhar em outros sites

 

O erro não chegou sendo solucionado :s

 

 

Editado:

Eu descobri que faltam 2 coisas em minha base de dados em account: create_ip e create_date

Como corrigo isso?

Editado por mikkas70 (veja o histórico de edições)

TibiaServers.org | A sua nova lista de servidores de Tibia

[url=https://tibiaservers.org/server/evolution-ot][img]https://tibiaservers.org/dynamic_banners/76-ankrahmun.png[/img][/url]

Link para o post
Compartilhar em outros sites

Tava funcionando normalmente até que se mudou eu quero...

 

QtPt3QN.png

 

 

Editei post principal com mais informação do debug

TibiaServers.org | A sua nova lista de servidores de Tibia

[url=https://tibiaservers.org/server/evolution-ot][img]https://tibiaservers.org/dynamic_banners/76-ankrahmun.png[/img][/url]

Link para o post
Compartilhar em outros sites

Troca o seu account.php

 

Penso que o problema seja apenas da base de dados não ter o "Creation" em accounts.

Editado por mikkas70 (veja o histórico de edições)

TibiaServers.org | A sua nova lista de servidores de Tibia

[url=https://tibiaservers.org/server/evolution-ot][img]https://tibiaservers.org/dynamic_banners/76-ankrahmun.png[/img][/url]

Link para o post
Compartilhar em outros sites

Pode ser mais arrume o erro que acuso na linha 33

Cara eu não consigo arrumar o erro, por isso estou postando aqui :S

 

Meu site estava dando tão bem, agora virou merda..

TibiaServers.org | A sua nova lista de servidores de Tibia

[url=https://tibiaservers.org/server/evolution-ot][img]https://tibiaservers.org/dynamic_banners/76-ankrahmun.png[/img][/url]

Link para o post
Compartilhar em outros sites

O erro não chegou sendo solucionado :s

 

 

Editado:

Eu descobri que faltam 2 coisas em minha base de dados em account: create_ip e create_date

Como corrigo isso?

 

mikkas segue conselho do cara não... não e solução mudar o account.php, seu pensamento esta correto e achar tabela... tente algo como table create_ip e procura na net

 

tenta algo assim

CREATE TABLE `accounts` ADD `create_ip` INT(11) NOT NULL DEFAULT '0'   

CREATE TABLE `accounts` ADD `create_date` INT(11) NOT NULL DEFAULT '0'

OU 

ALTER TABLE `accounts` ADD `create_ip` INT(11) NOT NULL DEFAULT '0'  
 ALTER TABLE `accounts` ADD `create_date` INT(11) NOT NULL DEFAULT '0'

Olha ae se não der fala que tento de novo criar.

peguei outra parte da mesma parte que você queria e troquei os nomes.

Link para o post
Compartilhar em outros sites

mikkas segue conselho do cara não... não e solução mudar o account.php, seu pensamento esta correto e achar tabela... tente algo como table create_ip e procura na net

 

tenta algo assim

CREATE TABLE `accounts` ADD `create_ip` INT(11) NOT NULL DEFAULT '0'   

CREATE TABLE `accounts` ADD `create_date` INT(11) NOT NULL DEFAULT '0'

OU 

ALTER TABLE `accounts` ADD `create_ip` INT(11) NOT NULL DEFAULT '0'  
 ALTER TABLE `accounts` ADD `create_date` INT(11) NOT NULL DEFAULT '0'

Olha ae se não der fala que tento de novo criar.

peguei outra parte da mesma parte que você queria e troquei os nomes.

 

Infelizmente não percebo de SQL ainda, já consegui arrumar o create_ip e o create_date através de uma base de dados, agora falta o "creation".

TibiaServers.org | A sua nova lista de servidores de Tibia

[url=https://tibiaservers.org/server/evolution-ot][img]https://tibiaservers.org/dynamic_banners/76-ankrahmun.png[/img][/url]

Link para o post
Compartilhar em outros sites

qual tag creation oque e ond fica?

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo