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


466

我已经将备份上传到一个表中,打开该表我看到了:

Warning in ./libraries/sql.lib.php#601
count(): Parameter must be an array or an object that implements Countable

Backtrace

./libraries/sql.lib.php#2038: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#1984: PMA_executeQueryAndGetQueryResponse(
array,
boolean true,
string 'alternativegirls',
string 'tgp_photo',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `tgp_photo`',
NULL,
NULL,
)
./sql.php#216: PMA_executeQueryAndSendQueryResponse(
array,
boolean true,
string 'alternativegirls',
string 'tgp_photo',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `tgp_photo`',
NULL,
NULL,
)
./index.php#53: include(./sql.php)

在phpMyAdmin内部...

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

寻找我发现有些人在他们的代码中有此错误,但是我没有在phpMyAdmin中找到任何收到此错误的人...

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


9
那些面临以下问题的人员:if ( count($articles)){..}CodeIgniter中,他们应该使用:if ( count((array)$articles)){..}这里
fWd82

2
我在phpmyadmin v4.6上遇到了这个问题,我更新到4.8,然后消失了。,似乎与mariadb 10.3有关,因为我在phpmyadmin 4.6的mariadb 10.1上没有这个问题
user889030

在我的情况下,当我在phpMyAdmin为4.7.1的情况下安装php 7.3时出现了问题,我切换回php 7.0,它可以正常工作,或者您应该安装与php 7.3兼容的phpMyAdmin版本
vinsa

Answers:


872

/usr/share/phpmyadmin/libraries/sql.lib.php使用以下命令编辑文件:

sudo nano +613 /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

95
难以置信的。可在Ubuntu 18.04上使用apt安装phpmyadmin。
PNDA

7
可以选择表,但尝试导出Db时返回错误
Alperian


30
如果在DB导出中遇到类似的问题,则需要编辑/usr/share/phpmyadmin/libraries/plugin_interface.lib.php,第551行,从 if($ options!= null && count($ options)> 0){到_if ($ options!= null && count((array)$ options)> 0){ 对于@alperian和其他人可能会很有趣
Bernd Schuhmacher

5
这对我不起作用。我知道了Error in processing request Error code: 500 Error text: Internal Server Error。@Chandra Nakka的解决方案解决了我的问题。

470

最简单的方法:

只需在终端的命令行下运行此命令,然后返回到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

现在可以正常工作了:)


39
可以在Ubuntu 18.04上于2018年8月使用:)
LuizGonçalves18年

4
在Ubuntu 16.04上对我不起作用
SP Singh

2
作品如魅力
Rameez Rami

2
适用于Ubuntu 19.04。谢谢
murume

4
nano的一个巧妙小技巧是,您可以键入nano +613 filename以直接将您带到特定行。
SteffenNielsen

102

在sql.lib.php中发现了此PHP 7.2 count()-SYNTAX错误

这完全可以在我的配置上工作:

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($ analyzed_sql_results ['select_expr'] == 1)&&($ analyzed_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;
 }

在下面的行中,您还必须在最后删除一个闭合括号。
软盘

谢谢。apt可安装软件包如何释放这种错误?只是有点荒谬。
乔什·莫雷尔

1
@floppes不,这是不正确的。您不应该删除该结束括号。我已经测试了您的方式,并且导致了这种情况server error。@loquace的答案应该是被接受的答案。

感谢您为我们阐明并在需要的地方使用粗体。第一个和第二个答案对我来说都不足够清楚,因为他们没有说自己在做什么。在nano上进行编辑与gedit或其他操作不同。
logicbloke

71

在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服务器并完成。


3
可在Ubuntu 16.04上运行
pjehan

7
可在Ubuntu 18.04上使用
Simon Epskamp,

4
Ubuntu 18.04,phpMyAdmin 4.8.0.1-我需要mkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah '18

Ubuntu 16.04只是将其解压缩即可使用/usr/share/phpmyadmin。无需遵循后续步骤。
tushar.dahiwale,

@billynoah在这里与新安装相同。我创建了tmp目录,将其设置为777,重新启动了Apache,注销了phpMyAdmin,错误消失了。
JScarry '18年

38

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

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

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

这对我有用


它已根据您解决内部500错误的情况为我工作,但未解决旧错误问题“ phpmyadmin-count():参数必须为数组或实现Countable的对象”。
shashik493

这似乎对我有用,但是有人知道为什么会这样吗?我的phpmyadmin工作正常,然后突然间我今天登录,似乎出现了这个问题?Ubuntu 18.04.2 LTS
–wheelsmanx

可在UBuntu 18.04,wing Nginx,php 7.2
PHPer

34
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

这对我来说在18.04上有效,谢谢!甚至无需重启服务器-PHP被解释为“实时”。
Jelle Veraa

@JelleVeraa,你是特例hehehe;)
kaleem

32

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

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

这也对我有帮助,但是我必须同时回答和这样做。Ubuntu 18.04
Karuhanga18年

2
这可以消除错误消息,但是我认为这样可以避免同时使用if语句,并且在数据库导出中我什么也得不到(在完成数据库刷新页面后,在底部显示了一堆错误)导出文件时占用的空间很小)
Warren Wang

吻,吻,我爱你。
诺亚·克拉瑟

1
在Debian 9上,将第551行替换为:if ($options != null && count($options) > 0) {if ($options != null) {然后可以导出
BitDEVil2K16 '19

这是唯一在18.04上工作的软件
TeT Psy


24

在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 并搜索以下功能:

 

    函数PMA_isRememberSortingOrder($ analyzed_sql_results)
     {
        返回$ 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']
            &&((空($ analyzed_sql_results ['select_expr']))
                || (计数($ analyzed_sql_results ['select_expr'] == 1)
                    &&($ analyzed_sql_results ['select_expr'] [0] =='*')))
            && count($ analyzed_sql_results ['select_tables'])== 1;
     }

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

     函数PMA_isRememberSortingOrder($ analyzed_sql_results)
     {
        返回$ 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']
            &&((空($ 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

它对我有用。


不需要MySQL和apache重新加载。
Tacsiazuma

修改文件后,我收到此消息:“-root @ Lalla:〜#/ usr / sbin / pma-secure-确保phpMyAdmin安装的安全...- 安装脚本将无法编写配置。 -root @ Lalla:〜# “
cl-r

22

打开此文件:'/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

您只是添加了一个括号。但是,谢谢。我删除了行尾的多余括号
redestructa

我在Mac上安装了xampp,找不到/ usr / share / phpmyadmin文件夹,因此找不到“ /usr/share/phpmyadmin/libraries/sql.lib.php”,这对我来说确实存在,您可以帮忙吗?
Saurabh Verma,

18

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

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

  • 第一步是从正式的Ubuntu存储库中安装PMA(phpMyAdmin)apt-get install phpmyadmin
  • 接下来,cd进入usr / share目录:cd /usr/share
  • 第三,删除phpmyadmin目录:rm -rf phpmyadmin
  • 现在我们需要将最新的PMA版本下载到我们的系统上(请注意,您需要wget :)apt-get install wgetwget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip"让我解释一下此命令的参数,-P定义路径,“ link.zip”当前为(7/17/18 )最新版本的PMA。您可以在此处找到那些链接。
  • 对于这一步,你需要解压(apt-get install unzipunzip phpMyAdmin-4.9.4-english.zip。我们只是解压缩了PMA,现在将其移至最终家。
  • 让我们使用cp(copy)命令移动文件!注意,-r由于这是一个文件夹,因此我们必须添加参数。cp -r phpMyAdmin-4.9.4-english phpmyadmin
  • 现在该进行清理了:rm -rf phpMyAdmin-4.9.4-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目录并编辑其内容。

这个答案非常有用!为我解决了问题!谢谢!PS:您可以在线找到河豚发电机。
lucbas

而且此链接上的解决方案:devanswers.co/manually-upgrade-phpmyadmin 遵循类似的计划,只是用更简单的步骤代替河豚步骤
。.– gwideman

与编辑旧版本的配置文件相比,这是一个更好的解决方案。
andromeda

17

尝试在以下文件中替换此功能:/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;
}

谢谢!这行是我在我有3个右括号的末尾弄错的地方,我只需要2个&&($ analyzed_sql_results ['select_expr'] [0] =='*')。使用phpmyadmin 4.6,php 7.2.10,ubuntu 18.4.1
Wang'l Pakhrin

17

Ubuntu 18.04 LTS

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

第1步摘自William Desportes的帖子
$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;


2
解决了Ubuntu 18.04 LTS上的问题。应该是公认的答案。
bgaze

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;

它为我工作。.无需升级mysql或任何东西...感谢@ole
Nitin Vaghani

15

为我工作.. 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。

做完了!!!


1
在613行中,更改为|| (count($analyzed_sql_results['select_expr']) == 1
tnductam '19

11

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

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

至:

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

缺少括号以关闭函数调用|| (count($ analyzed_sql_results ['select_expr'])== 1是正确的语句
Ruberandinda Patience

对于那些不知道在哪里找到文件的人,文件路径为“ /usr/share/phpmyadmin/libraries/sql.lib.php”。
阿里·伊姆兰

9

在更高版本的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版本不仅充满了bug,而且与新的4.9.0.1相比,它的运行速度也令人难以置信。速度的提高对我来说虽然是“ WordPress”质量的东西来说真是不可思议。


我将切换1和2的顺序,在wget之前,我将先cd / tmp,但是除此之外,非常好,谢谢。
克里斯,

这对我有用,感谢您的简单解决方案!
uestcfei

8

可在UBUNTU 16.04.3上使用

usr / share / libraries / sql.lib.php

修改

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

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



5

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

这就是我在614行中所做的更改,phpmyadmin正常运行而没有任何错误。需要一个(计数之前,和一个)==。而已。


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));"

3

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

修复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以便返回提示...

和: sudo systemctl restart apache2

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

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


3

/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上进行了测试。


3

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

尝试这个:-

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

sudo update-alternatives --config php

输出将是这样的:

在此处输入图片说明

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

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


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所做的更新(因为我使用了到目前为止的最新安装)安装程序。

答案仍然是替换: (count($analyzed_sql_results['select_expr'] == 1)

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

但是,要查找的文件Sql.php位于/opt/lampp/phpmyadmin/libraries/classes/Sql.php

将来的更新或如果您仍然找不到它:grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadmin用于在目录中搜索匹配的文档并进行相应的编辑


2

替换功能:

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;
}

2

编辑档案 /usr/share/phpmyadmin/libraries/sql.lib.php

看到关于您的错误的错误

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

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

这个对我有用。



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"

1

如在CONF文件在代码中的错误可能会发生变化(@Jacky阮VS @ĦΔŇĐŘΔŇΔҜҜΔ答案),
所述一般的解决方案 的答案将是
一个)校正条件逻辑在CONF文件,以使感测
(x)或b)安装校正/电流phpmyadmin

至于)

  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 "*"
    )
)

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


我在Mac上安装了xampp,找不到/ usr / share / phpmyadmin文件夹,因此找不到“ /usr/share/phpmyadmin/libraries/sql.lib.php”,这对我来说确实存在,您可以帮忙吗?
Saurabh Verma,

@SaurabhVerma对sql.lib.php或phpmyadmin文件夹执行文件搜索-如果您具有phpmyadmin,则必须将其安装在某个地方
jave.web
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.