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

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?


当前回答

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

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

按ctrl+w搜索(count($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

其他回答

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

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

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

这对我很有效

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

添加phpmyadmin ppa

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

这在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

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

您可能有一个较旧版本的phpmyadmin。

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