首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有一个Mysql包装类来支持mysqli的几个功能。

问有一个Mysql包装类来支持mysqli的几个功能。
EN

Stack Overflow用户
提问于 2012-06-06 15:35:58
回答 4查看 1.3K关注 0票数 2

简略的

我们需要从mysqli切换到mysql。我们需要一个包装类,它使用PHP的mysql扩展函数,但支持mysqli以下函数的功能-

代码语言:javascript
复制
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_connect_error(),直到php5.2.9才被支持(我们使用php5.2.6)
  • 在php 5.3.0之前不支持的持久连接(我们使用php 5.2.6 )

mysqli直到php 5.3.0才被完全支持。

所以,我们有两个选择-

  1. 升级PHP -但是,这将需要大量的回归测试,因为我们使用的OpenX版本似乎还没有针对这些最新的PHP版本进行测试。我们系统的核心在于Openx。
  2. 编写一个包装类,使其具有与MySQLi相同的面向对象API。这看起来更简单。

因此,我们决定估计出一个包装类所需的工作量。我们是这么想的-

由于PHP只为mysql扩展提供了过程接口,TeraWurflDatabase_MySQL5.php以面向对象的方式调用mysqli的函数,因此我们必须创建一个包装类,它将提供与mysqli类相同的接口,以便切换到mysql。

我们可以创建名称与mysqli相同的函数,例如query()、store_result(),并返回类似的参数,这样我们只需在TeraWurflDatabase_MySQL5.php文件中更改对象初始化。

有人做过这个吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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,我非常怀疑它是否会起作用,因为开放源码版本似乎不再被开发。

票数 2
EN

Stack Overflow用户

发布于 2012-06-06 20:39:17

你试过PDO了吗?由于您使用的是php 5.2和手册"PDO随PHP5.1一起提供,并且可以作为PHP5.0的PECL扩展“

票数 0
EN

Stack Overflow用户

发布于 2012-07-31 17:14:55

也许可以尝试一下Zebra_Database一个轻量级的mysql数据库包装器 -只有一个文件,成熟和很好的记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10917462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档