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

phpmyadmin-count():参数必须是实现可计数的数组或对象,phpmyadmin,countable,Phpmyadmin,Countable,我已将备份上载到一个表中,打开该表,我看到以下内容: 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

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

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错误?等待更新?回到PHP7.1?

phpmyadmin 4.7.4应该“修复了PHP7.2的几个兼容性问题”

你可能有一个旧版本的phpmyadmin


在Debian上测试,应该可以在Ubuntu上运行:

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

2.)删除(备份)位于
/usr/share/phpmyadmin
目录中的所有早期版本文件

3.)将最新phpmyadmin的所有文件解压缩到
/usr/share/phpmyadmin/
目录

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

define('CONFIG_DIR', '');

5.)重新启动apache服务器并完成。

我发现了这个问题

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

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

更改行:将括号移到=

||(计数($analysisted\u sql\u results['select\u expr']==1) &&($analysisted_sql_results['select_expr'][0]=='*'))


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

sudo nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php
在线613上,由于
$analysisted\u sql\u results['select\u expr']
之后没有右括号,因此count函数的计算结果始终为true。进行以下替换可以解决此问题,然后您需要删除第614行的最后一个右括号,因为它现在是一个额外的括号

替换:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr'] == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*')))
(count($analyzed_sql_results[‘select_expr’] == 1)
($analyzed_sql_results[‘select_expr’][0] == ‘*’)))
与:

重新启动apache服务器:

sudo service apache2 restart

尝试在文件中替换此函数: /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;
}

编辑文件“/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));"
适用于UBUNTU 16.04.3 刚刚打开

usr/share/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;
}
修改

||(计数($analysisted_sql_results['select_expr']==1)

||((计数($analysisted_sql_results['select_expr'])==1)

最简单的方法: 只需在终端的命令行下方运行此命令,然后返回PhpMyAdmin。现在它工作正常:)


手动方法: 打开sql.lib.php文件

nano /usr/share/phpmyadmin/libraries/sql.lib.php
nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php
查找
count($analysisted\u sql\u results['select\u expr'])
文件中的代码。您可以在第~613行中找到此代码。您可以在下面错误的代码中看到此代码

|| (count($analyzed_sql_results['select_expr'] == 1)
用下面的代码替换错误的代码

|| ((count($analyzed_sql_results['select_expr']) == 1)
保存文件并转到PhpMyAdmin

现在它工作正常:)


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

查看您的错误上的错误

./libraries/sql.lib.php#2038: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#1984: PMA_executeQueryAndGetQueryResponse(
转到此行并删除函数调用


它适合我。

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

替换
(计数($analysisted\u sql\u results['select\u expr']==1)

(计数($analysisted\u sql\u results['select\u expr'])==1


这对我来说很有效

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

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; } 步骤5)
sudo服务mysql重新加载

步骤6)
sudo服务apache2重新加载

它对我有用。。
Goodluck

如果有人在DB导出页面中出现类似错误(我在Ubuntu 18.04中遇到了这个问题),那么用代码替换文件
/usr/share/phpmyadmin/libraries/plugin_interface.lib.php
中的第551行

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

我在使用windows时遇到了这个问题,上面的回答为我解决了这个问题,但是当我切换到linux(Ubuntu18.04 LTS)时,我也遇到了同样的问题,无法找到解决方法,因为我没有看到文件“/usr/share/phpmyadmin/libraries/sql.lib.php”

这个sql.lib.php文件不在我的/opt/lampp目录的共享文件夹或phpmyadmin/libraries文件夹中,因为我在ubuntu上使用的是xampp。 基于对xampp的更新(因为我现在使用的是最新的安装)

答案仍然需要替换:
(count($analysisted\u sql\u results['select\u expr']==1)

使用:
(计数($analysisted\u sql\u results['select\u expr'])==1

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


未来的更新或者如果你仍然找不到它:使用
grep-r'count($analysisted\u sql\u results'/opt/lampp/phpmyadmin
在你的目录中搜索匹配的文档并进行相应的编辑

升级到phpmyadmin 4.8.3。这就解决了PHP7.2的兼容性问题

以下内容绝对解决了我同样的问题(进口/出口等):

所以…在ubuntu 18.04、mysql、php7.2下: 终端:

sudo gedit /usr/share/phpmyadmin/libraries/plugin_interface.lib.php
找到以下行(ctrl+f):

if ($options != null && count($options) > 0) {
我的电话是在线的

更改以下内容:

if ($options != null && count((array)$options) > 0) {
ctrl+s以保存更改

在终端中:ctrl+c表示返回提示

和:
sudo systemctl重启apache2

“我认为在新的php版本中。它不能将count()或sizeof()与un数组类型一起使用。将参数强制到数组是解决此错误的简单方法,…”

感谢原作者解决问题!我试着
sudo /usr/sbin/pma-secure
if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {
sudo gedit /usr/share/phpmyadmin/libraries/plugin_interface.lib.php
if ($options != null && count($options) > 0) {
if ($options != null && count((array)$options) > 0) {
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
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.
/*
 * 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! */
        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;
sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
Find: count($analyzed_sql_results['select_expr'] == 1)

Replace With:  (count($analyzed_sql_results['select_expr']) == 1)
 sudo service apache2 restart
sudo nano /usr/share/phpmyadmin/libraries/plugin_interface.lib.php
Ctrl+w : if ($options != null && count($options) > 0) {
if ($options != null && count((array)$options) > 0) {
sudo /etc/init.d/apache2 restart
sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
|| (count($analyzed_sql_results['select_expr'] == 1)
|| ((count($analyzed_sql_results['select_expr']) == 1)
sudo update-alternatives --config 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;
}
|| (count($analyzed_sql_results['select_expr'] == 1)
|| (count($analyzed_sql_results['select_expr']) == 1
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
sudo add-apt-repository ppa:phpmyadmin/ppa
sudo apt-get update
sudo apt-get upgrade
sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php 
(count($analyzed_sql_results[‘select_expr’] == 1)
(count($analyzed_sql_results[‘select_expr’]) == 1)
($analyzed_sql_results[‘select_expr’][0] == ‘*’)))
($analyzed_sql_results[‘select_expr’][0] == ‘*’))
sudo service apache2 restart