无法在另一个域上获取mySQLI_RESULT可能是什么原因?

时间:2015-08-31 作者:Danil Solodunov

我正在开发一个插件,它在我的Wordpress网站上运行得很好,但我已经在其他具有不同Wordpress实例的域上进行了测试。当尝试在其他网站上激活插件时,然后在该网站的每个页面上with no other plugins active 它引发以下错误:

警告:mysqli\\u free\\u result():无法在/home/user/websites/website中获取mysqli\\u结果。com/wp包括/wp db。php在线1389

在该插件的某些页面上,还有一个奇怪的错误,告诉它无法在same 声明类的行:

致命错误:无法在/home/user/websites/website.com/wp-content/plugins/plugin\\u-name/models/Utility.php:21中重新声明append()。com/wp-content/plugins/plugin\\u-name/models/Utility。php第21行

可以global $wpdbget_option($optionName) 以某种方式导致第一个错误还是什么?在干净的wordpress上,所有这些都可以很好地工作,但在其他一些没有激活插件的网站上就不行了。有人知道这里可能有什么问题吗?

任何建议都将不胜感激,我已经搜索了很多,真的不知道是什么原因造成的。

Edit<经过一些研究,我找到了所有可能导致出现第一个错误的代码行,但我看不出这里出了什么问题,没有什么帮助?

global $wpdb;
$wpdb->prefix;
$wpdb->get_var("show tables like \'".$table."\'");
$wpdb->query(
        "CREATE TABLE $tableName (
             id varchar(6) NOT NULL,
             id_parent varchar(6) NOT NULL,
             caption tinytext,
             type varchar(11) NOT NULL,
             description mediumtext
         );");
get_option($optionName);
这些函数调用与代码中的各行函数调用不同,但我敢肯定,只有它们才能导致错误,因为只有这些函数调用才能在任何页面上运行,并且在激活后的每个页面上都会发生错误。此外,我并不是在每个页面上创建表,这就是为什么我有get\\u var,它首先检查表是否存在,如果不存在,则创建它
我应该提到,插件本身实际上可以正常工作,但我仍然在一些wordpress网站上遇到这些错误,我需要消除它们。

1 个回复
SO网友:Andreas Krischer

Fatal error: Cannot redeclare append() 修复起来非常简单:您的插件似乎有一个名为append(), 正当在出现此错误的wordpress安装中,有另一个插件具有以下功能append() 也您可以使用PHP Namespaces 或者给你的函数起一个更独特的名字,比如pluginname_append().