Cajau 0 Denunciar post Postado Outubro 3, 2009 Salve, salve!! Estou com um problema, e milhões de pessoas no mundo inteiro parece passar por isso também, porque não encontrei em lugar nenhum, após 1 semana inteira de pesquisas, como resolver isso. Eu consigo conectar o banco de dados Acces com o PHP, mas INSERT, UPDATE e DELETE não funciona. Vou deixar o código abaixo e pedir a gentileza de uma boa alma pra me ajudar a resolver isso!! conexao.php <? $dbq = str_replace("/", "\\", $_SERVER["DOCUMENT_ROOT"]) . "pasta\\banco.mdb"; if (!file_exists($dbq)) { echo "O Banco de dados não existe! $dbq"; } $con = odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbq", "ADODB.Connection", "", "SQL_CUR_USE_ODBC"); ?> $sql = odbc_exec($con,"select * from tab1 where campo1 = 'algumacoisa'"); Até aí tudo bem O que não funciona vem abaixo: UPDATE, INSERT e DELETE $sql = odbc_exec($con,"UPDATE tab1 set data='$data' where camp1='$camp1'"); $sql = odbc_exec($con,"INSERT INTO tab1 (camp1, camp2) VALUES('$camp1', '$camp2'"); $datamenos = time() - 21600; // 6 horas $sql = odbc_exec($con,"DELETE from tab1 where data < '$datamenos'"); Preciso muito resolver isso! Antes que alguém me aconselhe a usar mysql, eu programo em ASP, mas precisei de um sistema de socket para conexão a um servidor e não consegui, somente com PHP consegui através do FSOCKOPEN, então por isso quero usar essa parte do PHP pra fazer o que eu preciso e gravar num banco access, que é utilizado em meu site. Senão terei que reprogramar o site inteiro. Por favor, espero que vcs me ajudem!! Felicidades!! Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Outubro 3, 2009 Qual erro que dá ? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 3, 2009 Eu consigo conectar o banco de dados Acces com o PHP, mas INSERT, UPDATE e DELETE não funciona. Você já verificou se você tem permissão de gravação nesse arquivo ?? Para ter certeza que é um problema de permissão de gravação basta fazer um SELECT, se você tiver algum resultado então definitivamente é falta de permissão de gravação. Compartilhar este post Link para o post Compartilhar em outros sites
Cajau 0 Denunciar post Postado Outubro 3, 2009 Qual erro que dá ? Não dá erro nenhum... somente não executa os comandos. Já fiz debug do tipo: echo " Passou por aqui"; Fiz isso em todo o código, pra ver onde estava parando... mas o script executa por completo. Ou seja, somente lê o banco, mas não escreve no banco, nem deleta. O banco, claro, tem permissão de escrita no servidor. Para ter certeza que é um problema de permissão de gravação basta fazer um SELECT, se você tiver algum resultado então definitivamente é falta de permissão de gravação. Consigo fazer SELECT sim $sql = odbc_exec($con,"select * from tab1 where campo1 = 'algumacoisa'"); Compartilhar este post Link para o post Compartilhar em outros sites
Cajau 0 Denunciar post Postado Outubro 3, 2009 Esse banco já é utilizado no meu site há muito tempo. O ASP executa todos esses comandos. Somente o PHP que não. Acredito que o problema não seja falta de permissão de escrita Deve estar faltando alguma coisa aí :( Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 3, 2009 Acredito que o problema não seja falta de permissão de escrita Deve estar faltando alguma coisa aí :( Humm, teste o seguinte: odbc_exec($con,"UPDATE tab1 set data='$data' where camp1='$camp1'"); if ( odbc_error() ){ echo odbc_errormsg( $con ); } else 'Ok'; Coloque aqui a saída. Compartilhar este post Link para o post Compartilhar em outros sites
Cajau 0 Denunciar post Postado Outubro 3, 2009 Acredito que o problema não seja falta de permissão de escrita Deve estar faltando alguma coisa aí Humm, teste o seguinte: odbc_exec($con,"UPDATE tab1 set data='$data' where camp1='$camp1'"); if ( odbc_error() ){ echo odbc_errormsg( $con ); } else 'Ok'; Coloque aqui a saída. Apresentou o seguinte erro na página inteira: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. $data = time(); Quando tento gravar a data no banco... Eliminei a gravação da data, só pra testar. O erro parou, mas continua não gravando no banco! Compartilhar este post Link para o post Compartilhar em outros sites
Cajau 0 Denunciar post Postado Outubro 3, 2009 CONSEGUIIIIII!!!! Gente, o problema tah dando na hora de salvar as horas e a data no banco!! Eu eliminei então a gravação das horas e da data e acabou o problema. Alguém sabe como gravar isso sem dar erro? Eu estava fazendo assim: $data = time(); $sql = odbc_exec($con,"UPDATE tab1 set data='$data' where camp1='algumacoisa'"); No Banco o campo Data/Hora está como Data Geral Só falta isso pra resolver o problema todo Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Outubro 3, 2009 quando você dá um echo time() aparece o que ? eu nao lembro depende do que sair você pode fazer assim: $data = time();$sql = odbc_exec($con,"UPDATE tab1 set data = convert(datetim,'$data',103) where camp1='algumacoisa'"); Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Outubro 3, 2009 $data = time(); $sql = odbc_exec($con,"UPDATE tab1 set data='$data' where camp1='algumacoisa'"); No Banco o campo Data/Hora está como Data Geral Tenta assim: $data = date( 'Y-m-d H:i:s' ); $sql = odbc_exec($con,"UPDATE tab1 set data='$data' where camp1='algumacoisa'"); Compartilhar este post Link para o post Compartilhar em outros sites
Cajau 0 Denunciar post Postado Outubro 3, 2009 $data = time(); $sql = odbc_exec($con,"UPDATE tab1 set data='$data' where camp1='algumacoisa'"); No Banco o campo Data/Hora está como Data Geral Tenta assim: $data = date( 'Y-m-d H:i:s' ); $sql = odbc_exec($con,"UPDATE tab1 set data='$data' where camp1='algumacoisa'"); Cara, vcs são muito bons!! Parabéns pela competência! Resolvido o problema :) Aproveitando, deixa aí então essa dica pra quem precisa usar banco de dados Access com PHP. Eu fiquei 1 semana inteira pesquisando, e só encontrei tópicos no Brasil e no exterior apenas com dúvidas, e nenhuma solução! Pra dizer a verdade eu só consigo resolver meus problemas aqui neste Fórum, não me desfazendo dos demais, claro! Mais uma vez parabéns pela competência de vocês!! Compartilhar este post Link para o post Compartilhar em outros sites