Andrer757 Posted March 8, 2008 Report Share Posted March 8, 2008 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 More sharing options...
djthyrax Posted March 8, 2008 Report Share Posted March 8, 2008 Estás a definir 2 vezes a classe. Vê se não estás a incluir 2 vezes o ficheiro ou se não a tens declarada noutro lado. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Andrer757 Posted March 8, 2008 Author Report Share Posted March 8, 2008 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 More sharing options...
djthyrax Posted March 8, 2008 Report Share Posted March 8, 2008 Bem visto, nunca mais me lembrei que no PHP5 é uma classe... Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
maiden Posted March 8, 2008 Report Share Posted March 8, 2008 Pois lol. É daqueles erros que se perde montes de tempo e no fundo são básicos. Offtopic: É Método e não Métudo. Cumps, Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now