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

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文件 (备份)

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

其他回答

这些方法对我来说都没用 您需要将phpmyadmin更新到最新版本,请遵循此处的说明

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

我尝试了以上所有的解决方案,但都不适合我。

试试这个:

安装所需的PHP版本(在我的例子中是7.0),然后在终端中键入

sudo update-alternatives --config php

输出如下所示:-

然后,只需输入选择号(在我的例子中是1),就可以切换到任何版本的PHP。

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

在Debian上测试,应该在Ubuntu上工作:

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

2)。删除(备份)位于/usr/share/phpmyadmin目录下的所有旧版本文件。

3)。解压所有phpmyadmin最新版本的文件到/usr/share/phpmyadmin/目录下。

4)。修改文件库/vendor_config.php并更改行:

define('CONFIG_DIR', '');

to

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

and

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

to

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

5.)重启apache服务器,完成。

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

至于a)

open the file with error code For the terminal people: sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php For the regular folks: sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php find the condition - basically search for $analyzed_sql_results['select_expr'] now the logic should be to check whether this sub array is empty, or, whether it has just 1 element with a value "* so basically the block between && $analyzed_sql_results['select_from']and && count($analyzed_sql_results['select_tables']) == 1 should look something like this

& & ( Empty ($analyzed_sql_results['select_expr']) //子数组为空, | | / /, ( (count($analyzed_sql_results['select_expr']) == 1) //只有一个元素 && //和同时 ($analyzed_sql_results['select_expr'][0] == '*') // 1元素值为"*" ) )

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

这对我很管用;

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

线路:614

替换两个代码:

替换:

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

:

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

AND

替换:

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

:

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

保存,退出并运行

sudo service apache2 restart