首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phpmyadmin - count():参数必须是数组或实现Countable的对象

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

Stack Overflow用户
提问于 2017-12-28 12:26:56
回答 39查看 446.3K关注 0票数 582

我已经将备份上传到一个表中,打开该表,我会看到以下内容:

代码语言:javascript
复制
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?

EN

回答 39

Stack Overflow用户

发布于 2018-03-26 11:59:26

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

代码语言:javascript
复制
sudo nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

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

替换:

代码语言:javascript
复制
((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr'] == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*')))

通过以下方式:

代码语言:javascript
复制
((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr']) == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*'))

重新启动服务器apache:

代码语言:javascript
复制
sudo service apache2 restart
票数 1.1K
EN

Stack Overflow用户

发布于 2018-05-26 03:57:11

最简单的方法:

只需在终端中运行下面的命令行,然后返回到PhpMyAdmin。

代码语言:javascript
复制
sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

手动方法:

打开sql.lib.php文件

代码语言:javascript
复制
nano /usr/share/phpmyadmin/libraries/sql.lib.php

在文件中查找count($analyzed_sql_results['select_expr']代码。你可以在~613行得到这个。您可以在下面的错误代码中看到这一点

代码语言:javascript
复制
|| (count($analyzed_sql_results['select_expr'] == 1)

只需用以下代码替换错误代码即可

代码语言:javascript
复制
|| ((count($analyzed_sql_results['select_expr']) == 1)

保存文件并转到PhpMyAdmin

票数 660
EN

Stack Overflow用户

发布于 2018-03-24 18:28:28

我找到了这个

这在我的配置中非常有效:

代码语言:javascript
复制
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’==‘*’))

在……里面

代码语言:javascript
复制
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;
 }
票数 112
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48001569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档