繁体   English   中英

PEAR的替换:PHP 5.3上的MDB2

[英]Replacement for PEAR: MDB2 on PHP 5.3

我已经在php中使用梨包多年了。 我正在升级/移动使用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并有解决方案? 你推荐的是类似的数据库包吗?

您还可以通过命令行升级到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

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

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

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

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

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

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

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

您可以使用Zend Framework数据库支持或使用DoctrinePropel之类的ORM

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

我使用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。 也许卢卡斯或其他开发者可能会对这个问题有所了解,或者指出我们正确的方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM