[英]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
我肯定会去一个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数据库支持或使用Doctrine或Propel之类的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.