beowlf 0 Denunciar post Postado Junho 19, 2015 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.phpRotina: executaSQLCodigo: 1062Mensagem: 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
RodriAndreotti 25 Denunciar post Postado Junho 19, 2015 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