简略的
我们需要从mysqli切换到mysql。我们需要一个包装类,它使用PHP的mysql扩展函数,但支持mysqli以下函数的功能-
query(), real_escape_string(), multi_query(), store_result(), more_results() , next_result(), use_result(), mysqli_connect_error(). 例如,对持久连接使用mysql_pconnect()。
基本上,它将确保我们对所有函数都有相同的逻辑和返回类型,我们必须根据所有相关函数的文档进行验证,并且可能还需要查看mysqli函数的实现。
但是,有没有人想出类似的办法?
背景
我们在移动设备检测系统中使用了WURFL。我们遇到了一些问题,因为我们的产品production为5.2.6,而TeraWurfl使用数据库连接器TeraWurflDatabase_MySQL5.php,它使用以下内容:
mysqli直到php 5.3.0才被完全支持。
所以,我们有两个选择-
因此,我们决定估计出一个包装类所需的工作量。我们是这么想的-
由于PHP只为mysql扩展提供了过程接口,TeraWurflDatabase_MySQL5.php以面向对象的方式调用mysqli的函数,因此我们必须创建一个包装类,它将提供与mysqli类相同的接口,以便切换到mysql。
我们可以创建名称与mysqli相同的函数,例如query()、store_result(),并返回类似的参数,这样我们只需在TeraWurflDatabase_MySQL5.php文件中更改对象初始化。
有人做过这个吗?
发布于 2012-06-06 21:46:39
首先,至少升级到最新的5.2.x版本--它完全兼容您的5.2.6版本,它现在已经4年了,并且有4年未修复的bug,包括安全问题。
其次,mysqli引入了许多不受mysql扩展支持的特性,您将无法使用包装器完成这些功能。如果您的php代码使用已准备好的语句,则多个语句或事务包装器将无法使用。
顺便说一句,OpenX似乎适用于PHP5.3,如果您应用此修补程序:http://www.outofcontrol.ca/thoughts/comments/openx-causing-segmentation-fault-11-in-php-5-3-6 --它不适用于PHP5.4,我非常怀疑它是否会起作用,因为开放源码版本似乎不再被开发。
发布于 2012-06-06 20:39:17
你试过PDO了吗?由于您使用的是php 5.2和手册"PDO随PHP5.1一起提供,并且可以作为PHP5.0的PECL扩展“
发布于 2012-07-31 17:14:55
也许可以尝试一下Zebra_Database一个轻量级的mysql数据库包装器 -只有一个文件,成熟和很好的记录。
https://stackoverflow.com/questions/10917462
复制相似问题