Jump to content

Erro com classes


Andrer757
 Share

Recommended Posts

Boas pessoal.

Estou aqui com um pequeno problema para por uma classe que criei a funcionar.

a classe (MySQLi.class.php):

/** Esta classe serve para gerir as ligações ás Bases de Dados MySQL.
* Esta classe utiliza as funçoes mysqli.
* @copyright I3Portal.net 2008
* @package I3
* @subpackage Admin
* @author André Rosa
* @access Private
*/
class MySQLi { //--> linha 10
  
  /** Atributos da class MySQLi.
  * @var $lig Conecção
  */
  private $lig = NULL;
  
  /** Métudo para ligar á base de dados.
  * @param String $bdname Nome da base de dados
  * @param String $user Utilizador do Mysql
  * @param String $password Password de acesso á base de dados
  * @param String $server Servidor da base de dados
  * @return Connecção á base de dados
  */
  public function ligarBD(string $bdname, string $user, string $password, string $server) {
    $this->lig = @mysqli_connect($server, $user, $password);
    if($this->lig<0) {
      return -1;
    }
    if(@mysqli_select_db($this->lig, $bdname)==false) {
      return -1;
    }
  }

  /** Métudo que executa um determinado comando SQL.
  * @param String $sql_command Comando SQL
  * @return $resultado Execução do comando
  * @requires A ligaçao esteja activa
  */
  public function executarSQL(string $sqlCommand) {
    $resultado = @mysqli_query($this->lig, $sqlCommand) or die(mysqli_error($this->lig));
    return $resultado;
  }

  /** Métudo que devolve os resultados de uma execução de um código SQL.
  * @param $executado variavel que detem o sql executado
  * @return $resultado Resultads obtidos
  * @requires A ligaçao esteja activa
  */
  public function resultadosObtidos($executado) {
    $resultado = @mysql_fetch_assoc($this->lig, $executado);
    return $resultado;
  }

  /** Métudo que executa um determinado comando SQL e retorna as linhas da tabela dessa tabela.
  * @param String $sql_command Comando SQL
  * @return Int $rows Total de linhas de uma tabela
  * @requires A ligaçao esteja activa
  */
  public function totalLinhas(string $sqlCommand) {
$rows = @mysqli_num_rows($this->lig, $sqlCommand);
    return $rows;
  }

  /** Métudo que transforma um objecto de forma a não causar problemas no MySQL.
  * @param Object $theValue O objecto
  * @param String $theType Tipo do Objecto
  * @param String $theDefinedValue Valor definido
  * @param String $theNotDefinedValue Valor não definido
  * @return Connecção á base de dados
  * @requires A ligaçao esteja activa
  */  
  public function GetSQLValueString(object $theValue, string $theType, $theDefinedValue = "", $theNotDefinedValue = "") {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($this->lig, $theValue) : mysqli_escape_string($this->lig, $theValue);
switch ($theType) {
	case "text":
		$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
		break;    
	case "long":
	case "int":
		$theValue = ($theValue != "") ? intval($theValue) : "NULL";
		break;
	case "double":
		$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
		break;
	case "date":
		$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
		break;
	case "defined":
		$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
		break;
}
return $theValue;
  }

  /** Métudo que fecha a Base de Dados.
  * @requires A ligaçao esteja activa
  */
  public function fecharBD() {
    mysqli_close($this->lig);
  }
}

e a página onde a estou a testar:

require_once("MySQLi.class.php");
$db = new MySQLi();
$db->ligarBD("aratransito", "root", "123456", "localhost");
$sql = "SELECT regiao, `desc` FROM marquee ORDER BY regiao ASC";
$executar = $db->executarSQL($sql);
$row = $db->resultadosObtidos($executar);
$totalDeLinhas = $db->totalLinhas($sql);
$db->fecharBD();
echo $row['regiao'];

o erro que me dá é:

Fatal error: Cannot redeclare class MySQLi in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Projectos\Actuais\TeleTrafego\MySQLi.class.php on line 10

Já tive a procurar aqui no fórum outros posts que pudessem ajudar mas não encontrei nada. Alguém me poderia ajudar? Thanks

Cumprimentos,

André Rosa

Link to comment
Share on other sites

pois mas eu so tenho esse dois ficheiros (MySQLi.class.php e teste.php) e so chamo a classe no ficheiro de testes, em mais lado nenhum por isso e que não percebo porque e que da erro mas vou ver se se passa tentando por so estes dois ficheiros no apache sem mais nenhum e ver se da caso contrario não percebo mesmo

thanks na mesma

---------- acrescentado ---------------

so com os dois ficheiros continua a dar o erro abra so a classe ou so a pagina de teste  😁

ja esta resolvido o problema e que o php como tem a classe mysqli e como a minha classe tambem tinha o mesmo nome (apesar de eu ter escrito MySQLi) entrava em conflito, agora mudei o nome da classe para BD e já funciona.

Cumprimentos,

André Rosa

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.