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

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?


当前回答

根据@jbator的回答,你可以编辑/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)) {

这样,导出的文件就不会是空的了。

其他回答

使用以下命令编辑/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

我发现这个PHP 7.2 count() -语法错误在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 ($ analyzed_sql_results [' select_expr ']) = = 1) & & ($ analyzed_sql_results [' select_expr '] [0 ] == '*')))

in

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

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

完成了! !

来看看: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)

在Ubuntu 18.04上,使用MariaDb和Nginx,我通过更新文件/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"