Pergunta

Eu uso pacotes de pêra no PHP há anos. Estou atualizando/movendo sites que usam o pacote de pêra MDB2 e ele não foi atualizado para o Php 5.3.x.

Em 5.3, o MDB2 está retornando esses novos erros irritantes.

Unknown: Assigning the return value of new by reference is deprecated in /usr/local/lib/php/MDB2.php on line 390

Sei que posso alterar minhas configurações de relatório de erro para me livrar delas, mas prefiro não fazer nenhuma exceção. De qualquer forma, alguém está usando o MDB2 hoje em dia e tem uma solução? Existem pacotes de banco de dados semelhantes que você recomenda?

Foi útil?

Solução

Eu definitivamente iria para um ORM, pelo menos se você estiver trabalhando em um grande projeto, para o qual você não deseja usar mysqli_* ou funções/métodos de PDO diretamente - Doutrina sendo o mais desenvolvido/usado hoje em dia (É o ORM padrão da estrutura de Symfony e pode ser integrado na estrutura ZEND com bastante facilidade).

Sobre a E_DEPRECATED Erros, no entanto: o PHP 5.3 é bastante jovem, e muitas bibliotecas/software/projetos ainda não foram adaptados-você provavelmente terá muitos deles nos próximos meses :-(

Outras dicas

Você também pode atualizar para a versão beta 3 através da linha de comando

pear upgrade MDB2-beta
pear upgrade MDB2_Driver_Mysql-beta

Explicação de por que a versão estável atual não é compatível com relatórios estritas de erro:http://pear.php.net/bugs/bug.php?id=9756

Fonte do comando:
http://pear.php.net/bugs/bug.php?id=18050

Vou comentar sobre isso, já que está chegando aos resultados da pesquisa do Google para o problema.

Entrei em contato com o desenvolvedor principal do MDB2, que disse:

Confira uma cópia do MDB2 da SVN, é totalmente compatível com Php5.3, com muitas melhorias de desempenho. Atualmente, estou aguardando algumas correções para o novo driver do SQL Server (a Microsoft está trabalhando nele nesta mesma semana), depois pressionarei uma nova versão estável.

(Editar, 4 anos depois: isso não está mais certo, não faça isso)

Acabei de baixar a versão mais recente do MDB2 (mdb2-2.5.0b3) daqui http://pear.php.net/package/mdb2/download E isso se livrou de todos os meus erros. Parece funcionar bem com o PHP versão 5.3.5

Você pode usar Estrutura de Zend Suporte ao banco de dados ou use um ORM como Doutrina ou Impulsionar

Acompanhei todos os erros e avisos depreciados, usando o MDB2 e o PHP 5.3, mas recebi alguns erros realmente estranhos no MDB2, então me perguntando o que está acontecendo sob o capô. Meu ambiente é o CentOS, Php 5.3, Mdb2-2.4.1, MySQL 5.0.77

A qualquer momento, uso o AutoExecute 2x em um arquivo php, o segundo está falhando (o mesmo acontece se eu tentar usar o preparar e depois executar). Eu tenho registrado o meu log de consultas MySQL e, embora uma inserção bem -sucedida mostre os valores, uma inserção com falha sempre terá apenas os espaços reservados. IE: valores (?,?,?). E o mdb2_error sempre mencionará RECURSÃO

LastInsertId () nunca trabalhou com tabelas MySQL e campos de autoinncrement (com o motorista MySQLI), fiz depuração suficiente, entrando profundamente na pilha de chamadas, e o resultado é tão envolvido em objetos, que você não pode dizer o que é, até o fim. Eu adoraria usar o MDB2 mais, mas, na verdade, tive que voltar ao MySQL reto, várias vezes por causa desses problemas. Talvez Lucas ou outros desenvolvedores possam lançar alguma luz sobre esse assunto ou nos apontar na direção certa.

Se você usar apenas o MDB2 para MySQL, poderá substituí -lo e manter a maioria das funções com o MDBDID: http://azure-dev.kiao.net/648-mdb2Você só terá pouco código para se adaptar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top