Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parameter must be an array or an object that implements Countable in phpmyadmin

Tags:

sql

wordpress

When I try and view the wp_posts table in phpmyadmin, I see this error message, but have no idea what it means and have never seen it before.

Can someone help me try and get rid of this somehow?

Warning in ./libraries/sql.lib.php#613
count(): Parameter must be an array or an object that implements Countable

Backtrace

./libraries/sql.lib.php#2128: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#2079: PMA_executeQueryAndGetQueryResponse(
array,
boolean true,
string 'afterhours',
string 'wp_posts',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/original/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `wp_posts`',
NULL,
NULL,
)
./sql.php#221: PMA_executeQueryAndSendQueryResponse(
array,
boolean true,
string 'afterhours',
string 'wp_posts',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/original/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `wp_posts`',
NULL,
NULL,
)
like image 840
Lee Avatar asked Jun 29 '18 21:06

Lee


2 Answers

This appears to be a duplicate of phpmyadmin - count(): Parameter must be an array or an object that implements Countable

According to the top answer on the linked post, it looks like there may be an error in the ./libraries/sql.lib.php that is causing the code to attempt a count() function on something other than an array (or an object that implements "Countable"). To fix it (according to the linked response):

Edit file '/usr/share/phpmyadmin/libraries/sql.lib.php' and replace

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

With:

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

This works because:

  • count cannot be performed on a non-array (hence your error, "Parameter must be an array or an object that implements Countable")
  • "== 1" in count() is an equivalency test, not an array
  • removing "== 1" from count() leaves a count(array) function, which works.
like image 107
A. MacGillivray Avatar answered Nov 18 '22 16:11

A. MacGillivray


I solved the problem by validating if it really is an array using the is_array() function like this:

if (is_array($yourArray)) {
    //Your count()
}
like image 34
Oscar Otero Avatar answered Nov 18 '22 16:11

Oscar Otero