10

多年来,我一直在 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 并有解决方案吗?有没有类似的数据库包推荐?

4

7 回答 7

9

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

不过,关于E_DEPRECATED错误:PHP 5.3 还很年轻,许多库/软件/项目还没有适应——在接下来的几个月里你可能会有很多这样的:-(

于 2009-10-07T10:28:22.263 回答
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

于 2012-04-13T18:05:12.397 回答
7

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

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

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

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

于 2010-05-17T10:57:38.850 回答
3

我刚刚从这里http://pear.php.net/package/MDB2/download下载了最新版本的 MDB2 (MDB2-2.5.0b3) ,它消除了我所有的错误。似乎与 PHP 版本 5.3.5 一起工作正常

于 2011-08-05T10:06:07.587 回答
1

您可以使用Zend Framework数据库支持或使用像DoctrinePropel这样的 ORM

于 2009-10-07T07:42:57.810 回答
0

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

任何时候,我在 php 文件中使用 autoExecute 2x,第二次失败(如果我尝试使用准备然后执行,也是如此)。我一直在记录我的 MySQL 查询日志,虽然成功的 INSERT 将显示值,但失败的 INSERT 将始终只有占位符。即:值(?,?,?,?)。而且 MDB2_Error 总是会提到RECURSION

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

于 2011-09-23T08:39:15.483 回答
0

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

于 2016-01-15T12:47:27.337 回答