Ir para conteúdo

Arquivado

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

beowlf

Rotina: executaSQL Erro 1062

Recommended Posts

boa tarde! Pessoal

 

alguém pode me ajudar a identificar onde esta o erro, e como solucionar ?

 

nao sei mais o que fazer....

 

INSERT INTO crm_usuarios (nome, email, login, senha, ativo, administrador, datacad) VALUES ('', '', '', '', '', '', '') Ocorreu um erro com os seguintes detalhes:
Arquivo: C:\wamp\www\paineladm\classes\banco.class.php
Rotina: executaSQL
Codigo: 1062
Mensagem:

 

 

meu codigo esta abaixo

<?php
require_once(dirname(__FILE__).'/autoload.php');
protegeArquivo(basename(__FILE__));
abstract class banco{
	//propriedades
public  $servidor       = DBHOST;
public  $usuario        = DBUSER; 
public  $senha          = DBPASS;
public  $nomebanco      = DBNAME;
public  $conexao        = NULL;
public  $dataset        = NULL;
public  $linhasafetadas = -1;

 //métodos
    public function __construct() {
        $this->conecta();
    }//construct

    public function __destruct() {
        if ($this->conexao != NULL):
            mysqli_close($this->conexao);
        endif;
    }//<destruct></destruct>

    public function conecta() {
        $this->conexao = mysqli_connect($this->servidor, $this->usuario, $this->senha, $this->nomebanco)
        or die($this->trataerro(__FILE__, __FUNCTION__, mysqli_errno(), mysqli_error(), TRUE));
   		mysqli_query($this->conexao, "SET NAMES 'utf8'");
        mysqli_query($this->conexao, "SET character_set_connection=utf8");
        mysqli_query($this->conexao, "SET character_set_client=utf8");
        mysqli_query($this->conexao, "SET character_set_results=utf8");
    }//conecta

    public function inserir($objeto) {
        //insert into nome da tabela ($campo1, $campo2) values ($valor1, $valor2)
        $sql = "INSERT INTO " . $objeto->tabela . " (";
        for ($i = 0; $i < count($objeto->campos_valores); $i++):
            $sql .= key($objeto->campos_valores);
            if ($i < (count($objeto->campos_valores) - 1)):
                $sql.= ", ";
            else:
                $sql .= ") ";
            endif;
            next($objeto->campos_valores);
        endfor;
        reset($objeto->campos_valores);
        $sql .= "VALUES (";
        for ($i=0; $i < count($objeto->campos_valores); $i++):
            $sql .= is_numeric($objeto->campos_valores[key($objeto->campos_valores)]) ?
                    $objeto->campos_valores[key($objeto->campos_valores)] :
                    "'" . $objeto->campos_valores[key($objeto->campos_valores)] . "'";
            if ($i < (count($objeto->campos_valores) - 1 )):
                $sql .= ", ";
            else:
                $sql .=") ";
            endif;
            next($objeto->campos_valores);
        endfor;
        echo $sql; //Descomente só para testes
        return $this->executaSQL($sql);
    }//inserir

    public function atualizar($objeto) {
        //update nomedatabela set campo1=valor1, campo2=valor2 where campochave=valorchave
        $sql = "UPDATE " . $objeto->tabela . " SET ";
        for ($i = 0; $i < count($objeto->campos_valores); $i++):
            $sql .= key($objeto->campos_valores) . "=";
            $sql .= is_numeric($objeto->campos_valores[key($objeto->campos_valores)]) ?
                    $objeto->campos_valores[key($objeto->campos_valores)] :
                    "'" . $objeto->campos_valores[key($objeto->campos_valores)] . "'";
            if ($i < (count($objeto->campos_valores) - 1)):
                $sql .= ", ";
            else:
                $sql .= " ";
            endif;
            next($objeto->campos_valores);
        endfor;
        $sql .= "WHERE " . $objeto->campopk . "=";
        $sql .= is_numeric($objeto->valorpk) ? $objeto->valorpk : "'" . $objeto->valorpk . "'";
        echo $sql;
        return $this->executaSQL($sql);
    }//atualizar

    public function deletar($objeto) {
        $sql = "DELETE FROM " . $objeto->tabela;
        $sql .= " WHERE " . $objeto->campopk . "=";
        $sql .= is_numeric($objeto->valorpk) ? $objeto->valorpk : "'" . $objeto->valorpk . "'";
        echo $sql;
        return $this->executaSQL($sql);
    }//deletar

    public function selecionaTudo($objeto) {
        $sql = "SELECT * FROM " . $objeto->tabela;
        if ($objeto->extras_select != NULL):
            $sql .=" " . $objeto->extras_select;
        endif;
        return $this->executaSQL($sql);
    }//selecionaTudo

    public function selecionaCampos($objeto) {
        $sql = "SELECT ";
        for ($i = 0; $i < count($objeto->campos_valores); $i++):
            $sql .= key($objeto->campos_valores);
            if ($i < (count($objeto->campos_valores) - 1)):
                $sql .= ", ";
            else:
                $sql .= " ";
            endif;
            next($objeto->campos_valores);
        endfor;
        $sql .= " FROM " . $objeto->tabela;
        if ($objeto->extras_select != NULL):
            $sql .=" " . $objeto->extras_select;
        endif;
        return $this->executaSQL($sql);
    }//selecionaCampos

    public function executaSQL($sql = NULL) {
        if ($sql != NULL):
            $query = mysqli_query($this->conexao, $sql) or $this->trataerro(__FILE__, __FUNCTION__);
            $this->linhasafetadas = mysqli_affected_rows($this->conexao);
            if (substr(trim(strtolower($sql)), 0, 6) == 'select'):
                $this->dataset = $query;
                return $query;
            else:
                return $this->linhasafetadas;
            endif;
        else:
            $this->trataerro(__FILE__, __FUNCTION__, NULL, 'Comando SQL não informado na rotina', FALSE);
        endif;
    }//executaSQL

    public function retornaDados($tipo = NULL) {
        switch (strtolower($tipo)):
            case "array":
                return mysql_fetch_array($this->dataset);
                break;
            case "assoc":
                return mysql_fetch_assoc($this->dataset);
                break;
            case "object":
                return mysql_fetch_object($this->dataset);
                break;
            default:
                return mysql_fetch_object($this->dataset);
                break;
        endswitch;
    }//retornaDados

    public function trataerro($arquivo = NULL, $rotina = NULL, $numerro = NULL, 
                              $msgerro = NULL, $geraexcept = FALSE) {
        if ($arquivo == NULL)
            $arquivo = "Não informado";
        if ($rotina == NULL)
            $rotina = "Não informada";
        if ($numerro == NULL)
            $numerro = mysqli_errno($this->conexao);
        if ($arquivo == NULL)
            $arquivo = mysql_error($this->conexao);
        $resultado = 'Ocorreu um erro com os seguintes detalhes:<br />
 			<strong>Arquivo:</strong> ' . $arquivo . '<br />
 			<strong>Rotina:</strong> ' . $rotina . '<br />
 			<strong>Codigo:</strong> ' . $numerro . '<br />
 			<strong>Mensagem:</strong> ' . $msgerro . '<br />
 			';
        if ($geraexcept == FALSE):
            echo ($resultado);
        else:
            die($resultado);
        endif;
    }//trataerro 
}//fim classe banco

?>

Fico no aguardo a Ajuda de vocês

 

Atenciosamente,

 

Fabiano

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala beowlf,

 

Basicamente o erro 1062 significa que você está inserindo um valor repetido em um campo que deveria ser único (uma chave primária, por exemplo).

 

Desta tabela onde está sendo feito o insert, algum dos campos é chave primária ou unique?

 

Em tempo, por que seu insert está indo com todos os valores vazios?

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.