ronza 1 Denunciar post Postado Outubro 31, 2012 Fala Galera beleza? Estou tendo problemas com Update e Delete. O código é o seguinte: "SELECT * FROM tabela WHERE nome = '$nome' AND id = '$id'"; (Funciona) "DELETE * FROM tabela WHERE nome = '$nome' AND id = '$id'"; (Não funciona) "UPDATE tabela SET nome = '$nome', categoria = '$categoria' WHERE email = '$email' AND id = '$id'"; (Não funciona) Estou fazendo algo errado? Só com uma variável, sem o AND, todos funcionam! Compartilhar este post Link para o post Compartilhar em outros sites
Dárcio Gomes 10 Denunciar post Postado Outubro 31, 2012 em questão do DELETE tente declarar sem o * e sem a condição do nome exemplo: "DELETE FROM tabela WHERE id = '$id'" no UPDATE faça mesma coisa declare a condição somente com a id espero ter ajudado! Compartilhar este post Link para o post Compartilhar em outros sites
ronza 1 Denunciar post Postado Novembro 1, 2012 O * eu coloquei por engano aqui, no meu código está sem. Com apenas uma variável funciona, o problema é quando põe o AND, aí para de funcionar. eu queria utilizar 2 variaveis, para que quando alguem mudasse o id, travasse o código. Compartilhar este post Link para o post Compartilhar em outros sites
Dárcio Gomes 10 Denunciar post Postado Novembro 1, 2012 poste seu código ai pra gente dar uma olhada. Compartilhar este post Link para o post Compartilhar em outros sites
ronza 1 Denunciar post Postado Novembro 1, 2012 if($_GET['acao'] == 'delete'){ $cadastroemail = $_SESSION['cadastroemail']; $id = $_GET['id']; $sql = "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id'"; $qr = mysql_query($sql) or die (mysql_error()); if($qr){ echo '<script>alert("Os dados de seu estabelecimento foram excluídos com sucesso.")</script>'; echo "<script language='javaScript'>window.location.href='perfil.php'</script>"; }else{ echo '<script>alert("Erro ao excluir os dados do estabelecimento.")</script>'; echo '<script>history.back(-1)</script>'; } } //FIM DELETE if($_GET['acao'] == 'voltar'){ echo "<script language='javaScript'>window.location.href='perfil.php'</script>"; } Compartilhar este post Link para o post Compartilhar em outros sites
Wingdings 20 Denunciar post Postado Novembro 1, 2012 Para deletar um registro, você teve passar a chave primaria, senao da erro mesmo DELETE FROM cadastroestab WHERE id = '$id' Uma solução seria fazer exatamente o que você estava fazendo no inicio do post: SELECT * FROM tabela WHERE nome = '$nome' AND id = '$id' armazena a ID em uma variavel $id_delete por exemplo DELETE * FROM tabela WHERE id = '$id_delete' :thumbsup: ________________________________________________ Só pra saber, ele exibia algum erro no PHP? Compartilhar este post Link para o post Compartilhar em outros sites
Dárcio Gomes 10 Denunciar post Postado Novembro 1, 2012 Para deletar um registro, você teve passar a chave primaria, senao da erro mesmo DELETE FROM cadastroestab WHERE id = '$id' Uma solução seria fazer exatamente o que você estava fazendo no inicio do post: SELECT * FROM tabela WHERE nome = '$nome' AND id = '$id' armazena a ID em uma variavel $id_delete por exemplo DELETE * FROM tabela WHERE id = '$id_delete' :thumbsup: ________________________________________________ Só pra saber, ele exibia algum erro no PHP? concordo com o amigo Wingdings... você terá que armazenar a ID em uma variável pra depois excluir o contrário sempre dará erro mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
ronza 1 Denunciar post Postado Novembro 1, 2012 Não exibe erro nenhum no php e nem no mysql, acho que simplesmente não encontra o registro no banco de dados. Vou testar deste seu jeito Wingdings, e depois volto a postar aqui. Não funcionou também.. Dei echo em tudo, achou um registro certinho com os dados certinhos, e mesmo assim não deleta! Compartilhar este post Link para o post Compartilhar em outros sites
Wingdings 20 Denunciar post Postado Novembro 1, 2012 :huh: tem como postar o 'novo' código?? Compartilhar este post Link para o post Compartilhar em outros sites
ronza 1 Denunciar post Postado Novembro 1, 2012 $cadastroemail = $_SESSION['cadastroemail']; $id = $_GET['id']; $sqlpesq = "SELECT * FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id'"; $qrpesq = mysql_query($sqlpesq) or die (mysql_error()); $NumRegpesq = mysql_num_rows($qrpesq); $regpesq = mysql_fetch_assoc($qrpesq); $id_delete = $regpesq['id']; if($_GET['acao'] == 'delete'){ $sql = "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id_delete' "; $qr = mysql_query($sql) or die (mysql_error()); if($qr){ echo '<script>alert("Os dados de seu estabelecimento foram excluídos com sucesso.")</script>'; echo "<script language='javaScript'>window.location.href='perfil.php'</script>"; }else{ echo '<script>alert("Erro ao excluir os dados do estabelecimento.")</script>'; echo '<script>history.back(-1)</script>'; } } //FIM DELETE if($_GET['acao'] == 'voltar'){ echo "<script language='javaScript'>window.location.href='perfil.php'</script>"; } Compartilhar este post Link para o post Compartilhar em outros sites
Dárcio Gomes 10 Denunciar post Postado Novembro 1, 2012 amigo... use somente $sql = "DELETE FROM cadastroestab WHERE id = '$id_delete' "; e não $sql = "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id_delete' "; e veja se funciona... :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Wingdings 20 Denunciar post Postado Novembro 1, 2012 Exatamente como o Dárcio Gomes disse Para deletar algum registro no banco de dados, você deve passar a CHAVE PRIMARIA. Eu testei aqui no sql, deletar sem passar a chave primaria eis o erro: Error Code: 1175. To disable safe mode, toggle the option in Preferences -> SQL Editor -> Query Editor and reconnect.You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column MySQL Workbench Talvez, existe alguma maneira de desativar esse "método de segurança", mas ai eu já não conheço, e prefiro manter as configurações padrão do banco de dados... Compartilhar este post Link para o post Compartilhar em outros sites
ronza 1 Denunciar post Postado Novembro 1, 2012 Não funcionou também. O problema é que todos os registros cadastrados pelo usuario, leva o e-mail dele, então não posso pegar só a variavel do e-mail, se não deleta todos os registros dele. E quando utilizo o id, não deleta, mas se dou echo, ele aparece. Fiz vários testes e descobri que é o id que ta dando problema, só não sei o porque! Compartilhar este post Link para o post Compartilhar em outros sites
Dárcio Gomes 10 Denunciar post Postado Novembro 1, 2012 vai no seu phpmyadmin e pega o codigo da estrutura da tabela que você ta utilizando e poste ai pra gnt dar uma olhada... pq uso a função de delete do geito que postamos acima e sempre funciona certinho, não será algum problema no tipo de formação de sua tabela?... :mellow: Amigo... só pode ser algum problema no banco mesmo pq fiz um teste aqui com um script exatamente como você postou ai e deletou o registro de boa... :mellow: Compartilhar este post Link para o post Compartilhar em outros sites
ronza 1 Denunciar post Postado Novembro 1, 2012 Não to conseguindo achar o código da estrutura da tabela. Mas eu também já utilizei estes códigos e funcionou normalmente, só desta vez mesmo que está dando erro com o id, e só no DELETE e UPDATE, SELECT funciona, muito estranho! Compartilhar este post Link para o post Compartilhar em outros sites
Wingdings 20 Denunciar post Postado Novembro 1, 2012 Faz o seguinte, $sqlpesq = "SELECT * FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id'"; $sql = "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id_delete' "; Provavelmente a $sql você alterou né? posta a atualizada xD Da echo nessas 2 linhas, e mostra pra gente o que exibe Qual programa você utiliza pra criar as tabelas no banco de dados?? As tabelas, alguma delas tem referencia pra essa que você ta excluindo e vice/versa? :ermm: Compartilhar este post Link para o post Compartilhar em outros sites
ronza 1 Denunciar post Postado Novembro 1, 2012 $sqlpesq = "SELECT * FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id'"; $sql = "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id_delete' "; Com o echo: SELECT * FROM cadastroestab WHERE cadastroemail = 'phpteste@hotmail.com' AND id = '257' DELETE FROM cadastroestab WHERE cadastroemail = 'phpteste@hotmail.com' AND id = '257' Eu uso o phpmyadmin e a ultima pergunta eu nao entendi.. Compartilhar este post Link para o post Compartilhar em outros sites
Wingdings 20 Denunciar post Postado Novembro 1, 2012 O delete você tentou fazer assim? $sql = "DELETE FROM cadastroestab WHERE id = '$id_delete' "; soh com chave primaria? Compartilhar este post Link para o post Compartilhar em outros sites
Dárcio Gomes 10 Denunciar post Postado Novembro 1, 2012 então ronza... o amigo Wingdings quiz dizer o seguinte se essa id que você ta pegando vem de outra tabela no banco, e se ela está com os mesmo dados. bom pelo menos foi o q eu entendi... :) bom pra ver a estrutura da sua tabela no phpmyadmin... abre o phpmyadmin, em seguida clique no banco em que a tabela se encontra, e clique na tabela, feito isso clique na aba estrutura, selecione toda a estrutura, da um Ctrl+C e Ctrl+v aqui e poste pra gente dar uma olhada. Compartilhar este post Link para o post Compartilhar em outros sites
ronza 1 Denunciar post Postado Novembro 1, 2012 é a mesma tabela! # Coluna Tipo Collation Atributos Nulo Padrão Extra Ação 1 id int(7) Não None AUTO_INCREMENT Alterar Eliminar Mais 2 cadastroemail varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 3 estabnome varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 4 estabcategoria varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 5 estabendereco varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 6 estabnumero varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 7 estabbairro varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 8 estabtel1 varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 9 estabtel2 varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 10 estabemail varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 11 estabsite varchar(100) utf8_general_ci Não None Alterar Eliminar Mais 12 estabpalavra varchar(600) utf8_general_ci Não None Alterar Eliminar Mais 13 estabimagem varchar(1000) utf8_general_ci Não None Alterar Eliminar Mais 14 estabunlink varchar(1000) utf8_general_ci Não None Alterar Eliminar Mais Compartilhar este post Link para o post Compartilhar em outros sites