PEAR的替换:PHP 5.3上的MDB2

时间:2009-10-07 07:39:48

标签: php mysql pear mdb2

我多年来一直在php中使用pear包。我正在升级/移动使用MDB2 pear包的网站,但尚未针对PHP 5.3.X进行更新。

在5.3中,MDB2正在返回那些令人烦恼的新错误。

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

我知道我可以更改我的错误报告设置以摆脱它们,但我宁愿不做任何例外。无论如何,这些天是否有其他人使用MDB2并有解决方案?你推荐的是类似的数据库包吗?

7 个答案:

答案 0 :(得分:9)

我肯定会去寻找ORM,至少如果你正在开展一个大项目,你不想直接使用mysqli_*或PDO函数/方法 - Doctrine现在开发/使用最多(它是symfony框架的默认ORM,可以很容易地集成到Zend Framework中)

关于E_DEPRECATED错误:PHP 5.3非常年轻,许多库/软件/项目尚未适应 - 在接下来的几个月中你可能会有很多这样的: - (

答案 1 :(得分:9)

您还可以通过命令行升级到beta 3版本

pear upgrade MDB2-beta
pear upgrade MDB2_Driver_Mysql-beta

解释当前稳定版本不符合严格错误报告的原因: http://pear.php.net/bugs/bug.php?id=9756

命令来源:
http://pear.php.net/bugs/bug.php?id=18050

答案 2 :(得分:7)

我将对此发表评论,因为它在Google搜索结果中出现了问题。

我联系了MDB2的首席开发人员,他说:

  

请从SVN查看MDB2的副本,它完全兼容PHP5.3,并有许多性能改进。我正在等待对新的SQL Server驱动程序进行一些修复(微软本周正在研究它),然后我将推出一个新的稳定版本。

(编辑,4年后:这不再是正确的,不要这样做)

答案 3 :(得分:3)

我刚刚从这里http://pear.php.net/package/MDB2/download下载了最新版本的MDB2(MDB2-2.5.0b3),它已经摆脱了我的所有错误。似乎可以在PHP Version 5.3.5中正常工作

答案 4 :(得分:1)

您可以使用Zend Framework数据库支持或使用DoctrinePropel

等ORM

答案 5 :(得分:0)

我使用MDB2和PHP 5.3解决了所有弃用的错误和警告, 但是我在MDB2上遇到了一些非常奇怪的错误,所以想知道怎么了引人注目的。 我的环境是CentOS,PHP 5.3,MDB2-2.4.1,MySQL 5.0.77

任何时候,我在php文件中使用autoExecute 2x,第二个是失败的(如果我尝试使用prepare然后执行则同样如此)。我一直在登录我的MySQL查询日志,虽然成功的INSERT将显示值,但失败的INSERT将始终只有占位符。即:值(?,?,?,?)。并且MDB2_Error将始终提及 RECURSION

lastInsertID()从未使用MySQL表和自动增量字段(使用mysqli驱动程序)   我对它进行了足够的调试,深入到调用堆栈中,结果得到了如此包裹在对象中,你不知道它是什么,直到最后。 我更喜欢使用MDB2,但事实上,由于这些问题,我不得不多次恢复直接的mysql。也许卢卡斯或其他开发者可能会对这个问题有所了解,或者指出我们正确的方向。

答案 6 :(得分:0)

如果你只使用MDB2 for MySQL,你可以用MDBDid替换它并保留大部分功能:http://azure-dev.kiao.net/648-mdb2 你只需要很少的代码就可以适应。