Este é meu primeiro post, pois estou com um certo problema um pouco chato, porém pesquisei nos forum e não achei algo semelhante.
O problema é o seguinte: tenho um pequeno sistema em php + mysql rodando localmente. Antes, eu usava a engine MyISAM, fazia as operações de insert, update, delete tudo ok, sem nenhum problema e para verificar o sucesso ou falha em alguma operação de inclusão eu usava o seguinte código de teste
Como surgiu a necessidade de se utilizar chaves estrangeiras e aproveitar as rstrinções baseada nelas, mudei a engine para InnoDB. O único problema que me surgiu foi que, ao induzir o sistema a inserir um tupla onde um ou mais valores dos campos correspondia a uma chave inexistente em outra tabela, o mysql disparava um erro, o que era de se esperar, entretanto no meu código php o else era executado, como se mesmo havendo o erro devido as restrinções das chaves estrangeiras, o método mysql_affected_rows() retornasse um valor positivo. Qualquer outra indução a erro que não levasse a estrinção às chaves, o mysql_affected_rows() retornava zero, levando a execução do bloco if corretamente.
Gostaria de saber se eu estou verificando de forma correta ou o meu código é falho e existe uma forma melhor de verificar essas restrições em php?
Sem mais, agradeço antecipadamente a todos os membros deste excelente forum pela atenção prestada.
Pergunta
Fagner Cruz
Olá a todos do forum,
Este é meu primeiro post, pois estou com um certo problema um pouco chato, porém pesquisei nos forum e não achei algo semelhante.
O problema é o seguinte: tenho um pequeno sistema em php + mysql rodando localmente. Antes, eu usava a engine MyISAM, fazia as operações de insert, update, delete tudo ok, sem nenhum problema e para verificar o sucesso ou falha em alguma operação de inclusão eu usava o seguinte código de teste
Como surgiu a necessidade de se utilizar chaves estrangeiras e aproveitar as rstrinções baseada nelas, mudei a engine para InnoDB. O único problema que me surgiu foi que, ao induzir o sistema a inserir um tupla onde um ou mais valores dos campos correspondia a uma chave inexistente em outra tabela, o mysql disparava um erro, o que era de se esperar, entretanto no meu código php o else era executado, como se mesmo havendo o erro devido as restrinções das chaves estrangeiras, o método mysql_affected_rows() retornasse um valor positivo. Qualquer outra indução a erro que não levasse a estrinção às chaves, o mysql_affected_rows() retornava zero, levando a execução do bloco if corretamente.
Gostaria de saber se eu estou verificando de forma correta ou o meu código é falho e existe uma forma melhor de verificar essas restrições em php?
Sem mais, agradeço antecipadamente a todos os membros deste excelente forum pela atenção prestada.
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.