Php 有一个Mysql包装类来支持mysqli的一些功能
简而言之Php 有一个Mysql包装类来支持mysqli的一些功能,php,mysql,mysqli,wrapper,Php,Mysql,Mysqli,Wrapper,简而言之 我们需要从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切换到mysql。我们需要一个包装类,它使用PHP的mysql扩展函数,但支持mysqli的以下函数的功能-
query(), real_escape_string(), multi_query(), store_result(), more_results() , next_result(), use_result(), mysqli_connect_error().
例如,使用mysql_pconnect()进行持久连接
基本上,这将确保所有函数都有相同的逻辑和返回类型,我们必须对照所有相关函数的文档进行验证,并且可能还必须研究mysqli函数的实现
但是,有人提出过类似的想法吗
背景我们在我们的系统中使用移动设备检测。我们面临一些问题,因为我们的生产PHP版本是5.2.6,TeraWurfl使用数据库连接器TeraWurflDatabase_MySQL5.PHP,它使用以下内容:
- mysqli_connect_error(),在PHP5.2.9之前不受支持(我们使用PHP5.2.6)
- 在PHP5.3.0之前不支持的持久连接(我们使用PHP5.2.6)
TeraWurflDatabase_MySQL5.PHP
以面向对象的方式调用mysqli的函数,因此我们必须创建一个包装类,该类将提供与mysqli类相同的接口,以便切换到mysql
我们可以创建与mysqli同名的函数,例如query()、store_result()和返回类似的参数,这样我们只需在TeraWurflDatabase_MySQL5.php
文件中更改对象初始化
有人这样做过吗?你试过了吗?由于您使用的是PHP5.2和手册“PDO随PHP5.1一起提供,并作为PHP5.0的PECL扩展提供”首先,至少要升级到最新的5.2.x版本-它与5.2.6完全兼容,5.2.6已经使用了4年,有4年未修复的bug,包括安全问题 其次,mysqli引入了许多mysql扩展不支持的特性,这些特性是使用包装器无法实现的。如果您的php代码使用准备好的语句,则多个语句或事务包装器将不起作用 顺便说一句,如果应用此修复程序,OpenX似乎可以与PHP5.3配合使用:
它不适用于PHP5.4,我严重怀疑它是否会工作,因为开源版本似乎不再被开发 如果您做了以下更改,可以尝试Zebra_数据库一个轻量级的、成熟的、只有一个文件的OpenX 2.8.10在PHP 5.4中工作: A) 在/openx2.8.10/lib/pear/pear.php中更改以下内容(第335行) 到 B) 在openx2.8.10/lib/OA/Admin/Statistics/Delivery/CommonEntity.php中更改以下内容(第294行) 到 C) 在openx2.8.10/lib/OA/Admin/Statistics/Delivery/CommonEntity.php中更改以下内容(第324行) 到
有了这些更改,OpenX及其Statistics页面将在PHP5.4中提供,谢谢您的回答。。。对于其他人,这里有一些关于mysql错误的链接,因为使用香草mysql不可能存储过程和多查询-
function setErrorHandling($mode = null, $options = null)
public static function setErrorHandling($mode = null, $options = null)
$oPlugin->mergeAds($this->childrendata['ad_id']);
$oPlugin->mergeAds(&$this->childrendata['ad_id']);
$oPlugin->mergeZones($this->childrendata['zone_id']);
$oPlugin->mergeZones(&$this->childrendata['zone_id']);