Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

uiLhian

Class de 'Conexão'

Recommended Posts

Qual seria a forma correta de se usar essa class de conexão ?

 

<?php
class Conexao {

private $host = "localhost";
private $tipo = "mysql";
private $login = "root";
private $senha = "";
private $database = "teste";
private $conecta = NULL;

public function Conectar(){
try{
$this->conecta = new PDO($this->tipo.":host=".$this->host.";dbname=".$this->database,$this->login,$this->senha);
return $this->conecta;
}
catch(PDOException $error){ echo $error->getMessage(); }
}
public function Desconecta(){
if($this->conecta !== NULL){
$this->conecta = NULL;
}
}
}
?>

coloquei assim $conectar = new Conexao;

ele me retorno o seguinte erro:

 

Warning: mysql_query() [function.mysql-query]: Access denied for user ''@'localhost' (using password: NO) in

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso ai é problema de autenticação, usuario ou senha errados no banco.

tente cadastrar um senha para o root.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro q vc mostrou, não tem nada a ver com o código q vc postou.

 

ou vc usa PDO ou vc usa mysql_.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ué mais foi o erro que me retorno... ;(

 

haaaaa....

Willian Bruno então eu teria que modificar tudo isso aqui tbm ?

 

 

<?php
$conexao = new Servidor;

$query_str = ("SELECT COUNT(*) as cont FROM teste WHERE ID_PASTA = 0");
$query = mysql_query($query_str);
$quant_resul = 8;
$pagina = 1;
$paginas = ceil($query['count'] / $quant_resul);
$result = mysql_query("SELECT *FROM teste LIMIT 0 , " . $quant_resul);

$conexao->desconecta;


$x = 1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser q tenha 2 classes com o mesmo nome e o include esta errado, é uma possibilidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@uiLhian, mas vc não está nos mostrando o código referente ao erro.

 

Cadê o restante ? ali no fim, a parte q vc cortou do erro .. in.. o php te informa exatamente qual o arquivo e linha. Poste o script correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja entendi ja...

é que o meu script ta todo em mysql_. e esse tipo de conexão ta em PDO né e muda "tudo"... ;(

vo volta pro que tava antes mesmo.

 

é que tava procurando na net como fazer uma "conexão segura" e vi esse exemplo mas não sabia que mudava de uma pra outro...

obrigado a todos!



só queria aproveitar o tópico e perguntar como faço pra ultilizar essa class aqui: de forma "correta"

que nem a function Executar($sql) / function checa_query($sql)

 

<?php
$dados['usuario'] = "root";
$dados['senha'] = "";
$dados['servidor'] = "localhost";
$dados['banco'] = "teste";


$conectar  = mysql_connect($dados['servidor'],$dados['usuario'],$dados['senha']) or die(mysql_error());
$bancodedados = mysql_select_db($dados['banco'],$conectar) or print(mysql_error());


class conexao {
var $obj = array ("servidor" => "localhost","usuario" => "usuario","senha" => "senha","banco" => "banco");
    var $conexao  = "";
    var $msg_erro = true;
        
    function Abrir() {    
        @$this->conexao = mysql_connect($this->obj['servidor'], $this->obj['usuario'], $this->obj['senha']);
                                        
        if (mysql_errno() == 2005 and $this->msg_erro == 1) {
            echo "Mysql_Error(2005) : Servidor nao foi encontrado <b>[".$this->obj["servidor"]."]</b>";
            exit;
        }
        elseif (mysql_errno() == 1045 and $this->msg_erro == 1) {
            echo "Mysql_Error(1045) : Nome ou Senha invalidos";
            exit;
        }
        if (mysql_errno() == 0 and $this->msg_erro == 1) {
            if ( !mysql_select_db($this->obj["banco"], $this->conexao)) {
                echo "Mysql_Erro(1049) Banco <b>[".$this->obj["banco"]. "</b>] nao foi encontrado";
                exit;
            }
        }    
    }     
    function Fechar() { if (isset($this->conexao)) { return mysql_close($this->conexao); } }
}


class ComandoSql extends conexao {


function Executar($sql) {
$this->Abrir();   
$re = @mysql_query($sql);
        $this->checa_query($sql);
        $this->Fechar();
           return $re;
    }
function checa_query($sql) {
if (mysql_errno() == 1146 and $this->msg_erro == 1) {
            $erro   = mysql_error();
            $arr    = explode("'", $erro);
            $tabela = explode(".", $arr[1]);
            echo "Essa tabela <b>[ ".$tabela[1]." ]</b> não existe!";
            exit();
        }
if ( mysql_errno() == 1054 and $this->msg_erro == 1 ) {                
            echo "Existe algum campo com nome errado";
            exit();
        }
        if (mysql_errno() == 1064 and $this->msg_erro == 1 ) {                
            $msg = "Existe algum erro na sintaxe SQL: <br />";
            $sql = preg_replace(sql_regcase("/(select|insert|delete|drop table|alter table|from|where|limit|\*|order by|group by)/"),"<font color=\"blue\">\\1</font>",$sql);
            echo "$msg [<font color=\"red\">$sql</font>]";                    
            exit();
        }        
    }
}
?>

tipo aqui por exemplo

 

 

<?php
$Abrir = new Conexao;


$query_str = ("SELECT COUNT(*) as cont FROM teste WHERE ID_PASTA = 0");
$query = mysql_query($query_str);
$quant_resul = 8;
$pagina = 1;
$paginas = ceil($query['count'] / $quant_resul);
$result = mysql_query("SELECT *FROM teste LIMIT 0 , " . $quant_resul);


$Fechar->desconecta;


$x = 1;


while($query_array = mysql_fetch_assoc($result)){
echo "<div class='thumb'><a class='OBRA_".$x."' href='javascript:void(0);' onclick=\"javascript:exibeImagens(".$query_array['ID'].",".$x.");\"><img src='thumb.php?img=imagens/obras/".$query_array['IMAGEM']."' /></a></div>";
$x++;
};
include('pag_indice.php');
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mysql_* acabou já.

 

Faz o povo entender, então. Por favor! :cry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O driver "nativo" do MySQL para PHP (as famosas funções mysql_*) será removido do PHP em versões futuras. Se não me engano, já está marcado como deprecated.

 

Utilize a extensão MySQLi ou PDO no seu lugar.

 

Quanto ao seu exemplo de código, não tem como usar essa classe com a sua estrutura, você precisa reescrever tudo.

Está faltando coisa aí também, enfim, creio que você não entendeu direito como funciona.

 

Sugiro que dê uma olhada aqui:

:seta: http://henriquebarcelos.in/blog/2012/08/20/php-oo-classe-simples-para-acesso-a-banco-de-dados/

 

É o mais simples possível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o povo entender, então. Por favor! :cry:

 

É mais fácil erradicar a fome do que isso.. o problema é o pessoal que ensina, não tem material recente nesses sites que ensinam sobre PHP, é tudo antigo, um livro de php + mysql de 1998 é mais vendido do que qualquer outro .. usando php 3 e tudo antigo. O problema está no conteúdo, sendo apostilas, artigos e cursos.

 

"Pau que nasce torto. Nunca se endireita."

Compartilhar este post


Link para o post
Compartilhar em outros sites

a hora q os servidores iniciarem a usar o php5.5 o pipoco vai ser grande, quando revomer entãoo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por volta de 2020 eles vão usar.

pq vc diz isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq vc diz isso?

 

Cara existe servidor usando PHP 4, lançado há 13 anos atrás, não migraram para o 5 até hoje, o 5 tem 8/9 anos e não quebra muito código, imagine o 5.5, vai quebrar, o Wordpress quebra, os sistemas legados quebram, mudança muito crítica para os sobrinhos, 2020 eu estou sendo otimista.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara existe servidor usando PHP 4...

qual hospedagem usa php4?

 

aqui na empresa uso 5.2.

o pessoal infra pensa.... "se ta funcionando n tem pq mudar. Se mudar ainda pode dar erro melhor ficar do jeito q esta" rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual hospedagem usa php4?

 

aqui na empresa uso 5.2.

o pessoal infra pensa.... "se ta funcionando n tem pq mudar. Se mudar ainda pode dar erro melhor ficar do jeito q esta" rsrs

 

As que cobram 1 real :skull: . e as gratuitas. :devil: Com o padrão sobrinho de qualidade.

 

Mas o PHP 5.5 ele vai só depreciar, arrobinha funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

so falta aumentar o uso da @ para 'resolver' o problema ai sim a coisa piora de vez; outra coisa a ser removida é ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando tivermos um PHP com classes bacanas ao invés das funções, tratando erros como exceptions, ele pode ser removido. Muitas funções dependem dela, porque não jogam erro, ou retornam false, erro antigo do PHP. Acho que as funções do PHP tem que ser reescritas em classes bacanas. Aconteceu com Db (PHP 5), erros (Exceptions - PHP 5.1), session handler (PHP 5.4), todas muito bem feitas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.