phpmyadmin - count():参数必须是实现Countable的数组或对象

时间:2017-12-28 04:26:56

标签: phpmyadmin countable

我已将备份上传到表格,打开表格,我看到了:

f_database.child("Blog").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot: dataSnapshot.getChildren()) {         
                double latitude = (double) (snapshot.child("lat").getValue());
                double longitude = (double) ((snapshot.child("lng").getValue());
                LatLng location = new LatLng(latitude,longitude);
                googleMap.addMarker(new MarkerOptions().position(location).title("pedik"));
            }
        }


        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

在phpMyAdmin内部......

PHP是7.2,服务器是Ubuntu 16.04,昨天安装。

正在寻找我看到有些人在他们的代码中有这个错误,但我没有找到任何人在phpMyAdmin中收到它......

我该怎么办?这是我的错误吗?一个phpmyadmin错误?等待更新?我回到PHP 7.1?

40 个答案:

答案 0 :(得分:498)

编辑文件/usr/share/phpmyadmin/libraries/sql.lib.php

sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

在第613行,count函数总是求值为true,因为在$analyzed_sql_results['select_expr']之后没有右括号。进行以下替换可解决此问题,然后您需要删除第614行的最后一个右括号,因为它现在是一个额外的括号。

替换:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr'] == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*')))

使用:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr']) == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*'))

重启服务器apache:

sudo service apache2 restart

答案 1 :(得分:281)

最简单的方法:

只需在终端下面的命令行运行,然后返回PhpMyAdmin。现在它工作正常:))

sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

手动方法:

打开 sql.lib.php 文件

nano /usr/share/phpmyadmin/libraries/sql.lib.php

在文件中查找count($analyzed_sql_results['select_expr']代码。您可以在〜 613 行获得此信息。您可以在下面看到错误的代码

|| (count($analyzed_sql_results['select_expr'] == 1)

只需用下面的

替换错误的代码即可
|| ((count($analyzed_sql_results['select_expr']) == 1)

保存文件并转到 PhpMyAdmin

  

现在它可以正常工作:)

答案 2 :(得分:71)

我发现了PHP 7.2 count() - SYNTAX error in sql.lib.php

这完全适用于我的配置:

Debian 9, 
PHP 7.2.3-1+0~20180306120016.19+stretch~1.gbp81bf3b (cli) (built: Mar  6 2018 12:00:19) ( NTS )

打开 /usr/share/phpmyadmin/libraries/sql.lib.php

更改行:在 ==

之前移动括号
  

|| (count($ analyze_sql_results ['select_expr'] == 1)                   &安培;&安培; ($ analyze_sql_results ['select_expr'] [0] =='*')))

function PMA_isRememberSortingOrder($analyzed_sql_results){

return $GLOBALS['cfg']['RememberSorting']
    && ! ($analyzed_sql_results['is_count']
        || $analyzed_sql_results['is_export']
        || $analyzed_sql_results['is_func']
        || $analyzed_sql_results['is_analyse'])
    && $analyzed_sql_results['select_from']
    && ((empty($analyzed_sql_results['select_expr']))
        || ((count($analyzed_sql_results['select_expr'] ) == 1)
            && ($analyzed_sql_results['select_expr'][0] == '*')))
    && count($analyzed_sql_results['select_tables']) == 1;
 }

答案 3 :(得分:63)

在Debian上测试,应该适用于Ubuntu:

1。)首先下载最新的phpMyadmin文件。

2.删除(备份)位于/usr/share/phpmyadmin目录中的所有先前版本文件。

3.。)解压缩到/usr/share/phpmyadmin/目录中最新phpmyadmin的所有文件。

4.修改文件libraries/vendor_config.php并更改行:

define('CONFIG_DIR', '');

define('CONFIG_DIR', '/etc/phpmyadmin/');

define('TEMP_DIR', './tmp/');

define('TEMP_DIR', '/tmp/');

5.)重新启动apache服务器并完成。

答案 4 :(得分:32)

修改文件(count($analyzed_sql_results['select_expr'] == 1)

替换(count($analyzed_sql_results['select_expr']) == 1

使用import "google/protobuf/timestamp.proto"; message User { string id = 1; ... google.protobuf.Timestamp created_at = 12; google.protobuf.Timestamp updated_at = 13; google.protobuf.Timestamp last_login = 14; }

这对我有用

答案 5 :(得分:31)

Works on UBUNTU 18.04 


Edit file: '/usr/share/phpmyadmin/libraries/sql.lib.php'
Replace: (count($analyzed_sql_results['select_expr'] == 1)
With:  ((count($analyzed_sql_results['select_expr']) == 1)

Restart the server
sudo service apache2 restart

答案 6 :(得分:23)

如果有人在数据库导出页面中有类似的错误(我在Ubuntu 18.04中有此问题),则用代码替换文件/usr/share/phpmyadmin/libraries/plugin_interface.lib.php中的第551行

if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {

答案 7 :(得分:23)

Ubuntu 18.04 LTS

这些是对我有用的步骤。非常感谢William Desportes在其Ubuntu PPA上提供了自动更新。

步骤1 from William Desportes post
$ sudo add-apt-repository ppa:phpmyadmin/ppa

第2步
$ sudo apt-get --with-new-pkgs upgrade

第3步
$ sudo service mysql restart

如果在重新启动mysql时遇到问题,也可以按照以下顺序重新启动
$ sudo service mysql stop;
$ sudo service mysql start;

答案 8 :(得分:23)

phpmyadmin 4.7.4应该“修复了PHP 7.2的几个兼容性问题”

您可能有较旧版本的phpmyadmin。

https://www.phpmyadmin.net/news/2017/8/24/phpmyadmin-474-released/

答案 9 :(得分:20)

在ubuntu-18.04上执行以下步骤:

步骤1)找到sql.lib.php

它将显示如下内容:

/usr/share/phpmyadmin/libraries/sql.lib.php

步骤2)打开终端(Alt t)并写入:

sudo /usr/sbin/pma-configure

第3步) sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php 并搜索以下功能:

 

    function PMA_isRememberSortingOrder($analyzed_sql_results)
     {
        return $GLOBALS['cfg']['RememberSorting']
            && ! ($analyzed_sql_results['is_count']
                || $analyzed_sql_results['is_export']
                || $analyzed_sql_results['is_func']
                || $analyzed_sql_results['is_analyse'])
            && $analyzed_sql_results['select_from']
            && ((empty($analyzed_sql_results['select_expr']))
                || (count($analyzed_sql_results['select_expr'] == 1)
                    && ($analyzed_sql_results['select_expr'][0] == '*')))
            && count($analyzed_sql_results['select_tables']) == 1;
     }

步骤4)将以上功能替换为:


     function PMA_isRememberSortingOrder($analyzed_sql_results)
     {
        return $GLOBALS['cfg']['RememberSorting']
            && ! ($analyzed_sql_results['is_count']
                || $analyzed_sql_results['is_export']
                || $analyzed_sql_results['is_func']
                || $analyzed_sql_results['is_analyse'])
            && $analyzed_sql_results['select_from']
            && ((empty($analyzed_sql_results['select_expr']))
                || (count($analyzed_sql_results['select_expr']) == 1)
                    && ($analyzed_sql_results['select_expr'][0] == '*'))
            && count($analyzed_sql_results['select_tables']) == 1;
     }

步骤4)保存&在终端上关闭文件和以下命令

sudo /usr/sbin/pma-secure

第5步) sudo service mysql reload

第6步) sudo service apache2 reload

它对我有用.. 古德勒克

答案 10 :(得分:18)

  ./libraries/plugin_interface.lib.php#532

中的

警告      

count():参数必须是实现的数组或对象   可数的

count(): Parameter must be an array or an object that implements Countable

phpmyadmin库的

试图计算一些参数。在532行,我在此路径中找到了此代码。

phpmyadmin’s library try to count some parameter

第532行的

编辑文件 /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

sudo nano /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

找到第if ($options != null && count($options) > 0) {行,并将count($options)替换为count((array)$options)

enter image description here

重新启动Apache服务:

sudo service apache2 restart

在新的php版本中,不能将 count() sizeof()与un array 类型一起使用。因此,您必须在此处强制将参数更改为array。

答案 11 :(得分:15)

尝试在文件中替换此函数: /usr/share/phpmyadmin/libraries/sql.lib.php

function PMA_isRememberSortingOrder($analyzed_sql_results)
{
    return $GLOBALS['cfg']['RememberSorting']
        && ! ($analyzed_sql_results['is_count']
            || $analyzed_sql_results['is_export']
            || $analyzed_sql_results['is_func']
            || $analyzed_sql_results['is_analyse'])
        && $analyzed_sql_results['select_from']
        && ((empty($analyzed_sql_results['select_expr']))
            || (count($analyzed_sql_results['select_expr']) == 1)
                && ($analyzed_sql_results['select_expr'][0] == '*'))
        && count($analyzed_sql_results['select_tables']) == 1;
}

答案 12 :(得分:15)

Ubuntu 18.10(2018年12月)

第613、614、615行,替换为:

        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;

答案 13 :(得分:11)

为我工作.. Ubuntu 18.04

sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

在文件中查找count($analyzed_sql_results['select_expr']代码。您可以在〜613行获得此功能。

|| (count($analyzed_sql_results['select_expr'] == 1)

只需用代码替换:

|| ((count($analyzed_sql_results['select_expr']) == 1)

保存文件并重新加载PhpMyAdmin。

完成!

答案 14 :(得分:11)

我认为最好的选择是将Phpmyadmin更新为已解决此问题的版本。

在将它发布为deb之前,您可以像在@crimson-501 answer中那样进行操作,我将在下面进行复制:

  • 您的第一步是从官方Ubuntu版本apt-get install phpmyadmin安装PMA(phpMyAdmin)。
  • 接下来,cd进入usr / share目录:cd /usr/share
  • 第三,删除phpmyadmin目录:rm -rf phpmyadmin
  • 现在我们需要将最新的PMA版本下载到我们的系统上(请注意,您需要wget:apt-get install wget):wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-english.zip" 让我解释一下此命令的参数,-P定义路径,“ link.zip”当前是(7/17/18)最新版本的PMA。您可以找到这些链接HERE
  • 对于下一步,您需要解压缩(apt-get install unzip):unzip phpMyAdmin-4.8.2-english.zip。我们只是解压缩了PMA,现在将其移至最终家中。
  • 让我们使用cp(复制)命令来移动我们的文件!注意,由于这是一个文件夹,因此我们必须添加-r参数。 cp -r phpMyAdmin-4.8.2-english phpmyadmin
  • 现在是时候清理了:rm -rf phpMyAdmin-4.8.2-english

继续阅读!

登录到PMA之后,您现在可能会注意到两个错误。

the configuration file now needs a secret passphrase (blowfish_secret). phpmyadmin
The $cfg['TempDir'] (./tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.

但是,这些问题相对容易解决。对于第一个问题,您要做的就是抓住您选择的编辑器并编辑/usr/share/phpmyadmin/config.inc.php,但是有一个问题,我们将其删除!没关系,您所要做的就是:cd /usr/share/phpmyadmincp config.sample.inc.php config.inc.php

示例phpMyAdmin Blowfish秘密变量条目:

/*
 * This is needed for cookie based authentication to encrypt password in
 * cookie
 */
$cfg['blowfish_secret'] = '{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V'; 
/* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

现在保存并关闭文件。

  • 现在,我们将为PMA创建一个tmp目录:mkdir tmpchown -R www-data:www-data /usr/share/phpmyadmin/tmp。最后一个命令允许Apache Web服务器拥有tmp目录并编辑其内容。

答案 15 :(得分:8)

适用于UBUNTU 16.04.3 刚打开

USR /共享/库/ sql.lib.php

修改

|| (count($analyzed_sql_results['select_expr'] == 1)

|| ((count($analyzed_sql_results['select_expr']) == 1)

答案 16 :(得分:7)

这对我有用;

sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php 

行号:614

替换两个代码:

替换:

(count($analyzed_sql_results[‘select_expr’] == 1)

与:

(count($analyzed_sql_results[‘select_expr’]) == 1)

替换:

($analyzed_sql_results[‘select_expr’][0] == ‘*’)))

与:

($analyzed_sql_results[‘select_expr’][0] == ‘*’))

保存,退出并运行

sudo service apache2 restart

答案 17 :(得分:7)

Ubuntu 18.04 上,这对我来说效果很好。

打开 sql.lib.php 文件

nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

替换此错误代码:

|| (count($analyzed_sql_results['select_expr'] == 1)

有了这个:

|| ((count($analyzed_sql_results['select_expr']) == 1)

保存文件。

使用以下方法重新启动服务器:

sudo service apache2 restart

并刷新 PhpMyAdmin

答案 18 :(得分:7)

  

打开此文件:'/usr/share/phpmyadmin/libraries/sql.lib.php'

sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
  

按Ctrl + w进行搜索(计数($(analyzed_sql_results ['select_expr'] ==   1)

Find: count($analyzed_sql_results['select_expr'] == 1)

Replace With:  (count($analyzed_sql_results['select_expr']) == 1)
  

重新启动服务器

 sudo service apache2 restart

此外,如果您仍然遇到相同的问题,请执行以下操作。

  

打开此文件/usr/share/phpmyadmin/libraries/plugin_interface.lib.php

sudo nano /usr/share/phpmyadmin/libraries/plugin_interface.lib.php
  

查找:if($ options!= null && count($ options)> 0){

Ctrl+w : if ($options != null && count($options) > 0) {

替换为以下代码

if ($options != null && count((array)$options) > 0) {

现在保存并重新启动服务器

sudo /etc/init.d/apache2 restart

答案 19 :(得分:4)

编辑文件'/usr/share/phpmyadmin/libraries/sql.lib.php'替换: (备份)

"|| (count($analyzed_sql_results['select_expr'] == 1) 
&&($analyzed_sql_results['select_expr'][0] == '*'))) 
&& count($analyzed_sql_results['select_tables']) == 1;"

使用:

"|| (count($analyzed_sql_results['select_expr']) == 1) 
&& ($analyzed_sql_results['select_expr'][0] == '*') 
&& (count($analyzed_sql_results['select_tables']) == 1));"

答案 20 :(得分:3)

只需更正 count() 函数和右括号 从 /usr/share/phpmyadmin/libraries/sql.lib.php 文件中的第 604 行到第 615 行:

function PMA_isRememberSortingOrder($analyzed_sql_results)
{
    return $GLOBALS['cfg']['RememberSorting']
        && ! ($analyzed_sql_results['is_count']
            || $analyzed_sql_results['is_export']
            || $analyzed_sql_results['is_func']
            || $analyzed_sql_results['is_analyse'])
        && $analyzed_sql_results['select_from']
        && ((empty($analyzed_sql_results['select_expr']))
            || (count($analyzed_sql_results['select_expr']) == 1)
                && ($analyzed_sql_results['select_expr'][0] == '*'))
        && count($analyzed_sql_results['select_tables']) == 1;
}

答案 21 :(得分:3)

我尝试了上述所有解决方案,但对我没有用。

尝试一下:-

安装所需版本的PHP(在我的情况下为7.0),然后在终端中键入

sudo update-alternatives --config php

输出将如下所示:-

enter image description here

然后,您只需输入选择号(在我的情况下为1)即可切换到任何版本的PHP。

希望这可以帮助其他-:)

答案 22 :(得分:2)

添加phpmyadmin ppa

sudo add-apt-repository ppa:phpmyadmin/ppa
sudo apt-get update
sudo apt-get upgrade

答案 23 :(得分:2)

升级到phpMyAdmin 4.8.3。这解决了PHP 7.2兼容性问题

答案 24 :(得分:2)

我在使用Windows时遇到了这个问题,上面的响应为我解决了这个问题,但是当我切换到linux(ubuntu 18.04 LTS)时,我遇到了同样的问题,无法解决该问题,因为我没有参见文件“ /usr/share/phpmyadmin/libraries/sql.lib.php”。

此sql.lib.php文件不在我的/ opt / lampp目录的share文件夹或phpmyadmin / libraries文件夹中-因为我在ubuntu上使用了xampp。 基于对xampp的更新(因为我使用了到目前为止的最新安装)设置。

答案仍然是替换:dt2[, count := sum(is.na(dt1$utc_tstamp[from:(from + len)])), by = 1:nrow(dt2)]

使用:(count($analyzed_sql_results['select_expr'] == 1)

但是要查找的文件是在(count($analyzed_sql_results['select_expr']) == 1中找到的Sql.php

将来的更新或仍然找不到它:使用/opt/lampp/phpmyadmin/libraries/classes/Sql.php在目录中搜索匹配的文档并进行相应的编辑

答案 25 :(得分:2)

我看到您都在通过我们的文件进行编辑或更新

对于那些想要自动更新的人,可以使用我们的Ubuntu PPA

sudo add-apt-repository ppa:phpmyadmin/ppa

对于Debian用户,您将需要等待Debian的下一个版本或使用PPA

Ubuntu 20具有phpMyAdmin 4.9或更高版本

Debian issue on our tracker

Countable issues on our tracker

TLDR 更新到最新的4.9或5.0版本以解决此问题。

答案 26 :(得分:1)

|| ((count($analyzed_sql_results['select_expr']) == 1

这是我在614行中所做的更改,并且phpmyadmin可以正常工作。 在计数之前需要一个(,在)之前需要一个==。而已。

答案 27 :(得分:1)

add-apt-repository ppa:phpmyadmin/ppa
apt-get clean
apt-get update
apt-get purge phpmyadmin
apt-get install phpmyadmin

在Ubuntu 18.04上为我修复了该问题。

答案 28 :(得分:1)

这些解决方案中没有一个对我有用 您需要将phpmyadmin更新为最新版本,请按照此处的说明进行操作

https://askubuntu.com/questions/947805/how-to-upgrade-phpmyadmin-revisited

答案 29 :(得分:1)

您好,以下内容绝对可以解决我的相同问题(导入/导出等):

Fix Bug Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

所以...在Ubuntu 18.04,MySQL,php7.2下: 终端:

sudo gedit /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

查找以下行(ctrl + f):

if ($options != null && count($options) > 0) {

对我来说是#551行

更改以下内容:

if ($options != null && count((array)$options) > 0) {

ctrl + s保存更改

并在终端中:ctrl + c以便返回promt ...

并且: sudo systemctl restart apache2

“我认为是在新的php版本中。它不能使用un()数组类型的count()或sizeof()。将参数强制设置为array是解决此错误的简便方法,...”

感谢原作者解决问题!我尝试分享!

答案 30 :(得分:1)

(PHP 7> = 7.3.0)

中引入的

is_countable 函数

is_countable —验证变量的内容是可计数的值。

按照以下方式使用此功能::

<add name="DebugAttachHandler" path="DebugAttach.aspx" verb="DEBUG" type="System.Web.HttpDebugHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />

它将返回布尔值。有关更多详细信息,请访问http://php.net/manual/en/function.is-countable.php

答案 31 :(得分:1)

在具有MariaDb和Nginx的Ubuntu 18.04上,我通过更新文件/usr/share/phpmyadmin/libraries/sql.lib.php来解决该问题,如下所示:

|| (count($analyzed_sql_results['select_expr']) == 1

@Nguyen提到的答案抛出500错误:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"

答案 32 :(得分:0)

替换功能:

function PMA_isRememberSortingOrder($analyzed_sql_results) {
return $GLOBALS['cfg']['RememberSorting']
    &&!(
        $analyzed_sql_results['is_count']
        || $analyzed_sql_results['is_export']
        || $analyzed_sql_results['is_func']
        || $analyzed_sql_results['is_analyse']
    )&&
    $analyzed_sql_results['select_from']&&
    (
        empty($analyzed_sql_results['select_expr'])||
        count($analyzed_sql_results['select_expr'])==1&&
        $analyzed_sql_results['select_expr'][0] == '*'
    )
    && count($analyzed_sql_results['select_tables']) == 1;
}

答案 33 :(得分:0)

此问题在更高版本的PHPMyAdmin中已修复。适用于Ubuntu 18.04.2的Ubuntu软件存储库的版本为4.6.6.5,而当前版本为4.9.0.1。更新您的PHPMyAdmin安装将解决此问题,但可能比仅编辑一行代码要冒更大的风险。这是我在Ubuntu服务器上执行此操作的方法。所有操作系统的步骤基本相同(路径不同)。

  1. 下载PHPMyAdmin
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip
unzip phpMyAdmin-4.9.0.1-all-languages.zip
  1. 备份旧的PHPMyAdmin安装。
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. 将新的PHPMyAdmin拖放到旧的PHPMyAdmin上
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

验证其是否有效。。如果没有,请...您有备份,请还原并手动编辑有问题的行。以我个人的经验,我发现执行此操作后,版本4.6.6.5不仅布满了错误,而且与新版4.9.0.1相比,速度也令人难以置信。速度的提高对我来说虽然是“ WordPress”质量的东西来说真是不可思议。

答案 34 :(得分:0)

对于我的phpmyadmin版本(4.6.6deb5),我找到了613行,并意识到count()括号未正确关闭。要暂时解决此问题直到下一个版本,只需更改:

|| (count($analyzed_sql_results['select_expr'] == 1)

收件人:

|| (count($analyzed_sql_results['select_expr']) == 1

答案 35 :(得分:0)

看看:https://devanswers.co/problem-php-7-2-phpmyadmin-warning-in-librariessql-count/

首先,在编辑之前备份sql.lib.php。 在nano中编辑sql.lib.php。

$ sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

按CTRL + W并搜索(count($ analyzed_sql_results ['select_expr'] == 1)

用((count($ analyzed_sql_results ['select_expr'])== 1)替换它

保存文件并退出。 (按CTRL + X,按Y,然后按ENTER)

答案 36 :(得分:0)

编辑文件'/usr/share/phpmyadmin/libraries/sql.lib.php'

查看错误错误

./ libraries / sql.lib.php#2038:PMA_isRememberSortingOrder(array) ./libraries/sql.lib.php#1984:PMA_executeQueryAndGetQueryResponse(

转到此行并删除函数调用。

它对我有用。 谢谢

答案 37 :(得分:0)

以提升的权限打开/usr/share/phpmyadmin/sql.lib.php文件,然后在函数PMA_isRememberSortingOrder()中编辑以下内容:

  1. 〜第613行修复了初始错误:
    • 替换|| count($analyzed_sql_results['select_expr'] == 1)
    • 使用|| (count($analyzed_sql_results['select_expr']) == 1)
  2. 〜第614行修复了可能会出现的500错误:
    • 替换&& ($analyzed_sql_results['select_expr'][0] == '*')))
    • 使用&& ($analyzed_sql_results['select_expr'][0] == '*'))

重新启动Apache服务器:sudo service apache2 restart

在基于Ubuntu 18.04,PhpMyAdmin 4.6.6和PHP 7.2的Linux Mint 19.1上进行了测试。

答案 38 :(得分:0)

由于conf文件中代码中的错误可能有所不同(@Jacky Nguyen与@ĦΔŇĐŘΔΔŇΔҜҜΔΔ答案),
一般解决方案答案将是:  
a)更正conf文件中的条件逻辑以使其有意义  
(x)或b)安装正确/当前的phpmyadmin

至于a)

  1. 使用错误代码打开文件
    对于终端用户:sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
    对于普通人:sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php

  2. 找到条件-基本搜索$analyzed_sql_results['select_expr']

  3. 现在的逻辑应该是检查此子数组是否为空,或者是否只有1个元素的值为“ *

  4. 基本上就是&& $analyzed_sql_results['select_from']
    && count($analyzed_sql_results['select_tables']) == 1之间的块

    应该看起来像这样

&& (
    empty($analyzed_sql_results['select_expr']) //the sub array is empty,
    || //or,
    (
        (count($analyzed_sql_results['select_expr']) == 1) //it has just 1 element
        && //and at the same time
        ($analyzed_sql_results['select_expr'][0] == '*') //the 1 element value is "*"
    )
)

这是为什么要缩进和美化您的代码的一个很好的例子,如果代码正确无误,我相信这永远不会发生,或者至少会更容易找到。

答案 39 :(得分:-1)

基于@jbator's answer,您可以编辑/usr/share/phpmyadmin/libraries/plugin_interface.lib.php并替换以下行:

if ($options != null && count($options) > 0) {

包含以下几行:

if ($options != null &&
   ((is_array($options) || $options instanceof Countable) && count($options) > 0) ||
   (method_exists($options, 'getProperties') && $options->getProperties() != null && (is_array($options->getProperties()) || $options->getProperties() instanceof Countable) && count($options->getProperties()) > 0)) {

这样,我们将没有空的导出文件。