phpmyadmin - count (): Parameter harus berupa array atau objek yang mengimplementasikan Countable


468

Saya telah mengunggah cadangan ke sebuah tabel, membuka tabel yang saya lihat ini:

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)

Di dalam phpMyAdmin ...

PHP 7.2, server Ubuntu 16.04, diinstal kemarin.

Mencari Saya melihat bahwa beberapa orang memiliki kesalahan dalam kode mereka, tetapi saya tidak menemukan orang yang menerimanya di phpMyAdmin ...

Apa yang harus saya lakukan? Apakah itu kesalahan saya? Kesalahan phpmyadmin? tunggu pembaruan? Saya kembali ke PHP 7.1?


9
Mereka yang menghadapi masalah seperti: if ( count($articles)){..}di CodeIgniter , mereka harus menggunakan: if ( count((array)$articles)){..}seperti di sini
fWd82

2
Saya punya masalah ini di phpmyadmin v4.6 saya memperbarui ke 4.8 itu menghilang. , sepertinya ada hubungannya dengan mariadb 10.3 karena saya tidak punya masalah di mariadb 10.1 dengan phpmyadmin 4.6
user889030

Dalam kasus saya masalah terjadi ketika saya telah menginstal php 7.3 sementara phpMyAdmin saya 4.7.1, saya beralih kembali ke php 7.0 dan berfungsi dengan baik atau Anda harus menginstal versi phpMyAdmin yang kompatibel dengan php 7.3
vinsa

Jawaban:


877

Edit file /usr/share/phpmyadmin/libraries/sql.lib.phpmenggunakan perintah ini:

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

Pada baris 613 fungsi hitungan selalu bernilai true karena tidak ada tanda kurung tutup setelahnya $analyzed_sql_results['select_expr']. Membuat penggantian di bawah ini menyelesaikan ini, maka Anda harus menghapus tanda kurung penutup terakhir pada baris 614, karena sekarang tanda kurung tambahan.

Menggantikan:

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

Dengan:

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

Mulai ulang apache server:

sudo service apache2 restart

95
Luar biasa. Bekerja pada Ubuntu 18.04 dengan phpmyadmin diinstal menggunakan apt.
PNDA

7
Bekerja di bahwa saya dapat memilih tabel, tetapi kesalahan kembali ketika saya mencoba untuk mengekspor Db
Alperian


30
Jika Anda menghadapi masalah serupa dalam ekspor DB, Anda perlu mengedit /usr/share/phpmyadmin/libraries/plugin_interface.lib.php, baris 551 dari if ($ options! = Null && count ($ options)> 0) {to _if ($ options! = null && count ((array) $ options)> 0) { Mungkin menarik untuk @alperian dan lainnya
Bernd Schuhmacher

5
Ini tidak berhasil untuk saya. Saya punya Error in processing request Error code: 500 Error text: Internal Server Error. Solusi dari @Chandra Nakka memperbaiki masalah saya.
Jee

473

Metode termudah:

Jalankan saja perintah di bawah ini di terminal dan kembali ke PhpMyAdmin. Sekarang berfungsi dengan baik :)

sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

Metode Manual:

Buka file sql.lib.php

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

Temukan count($analyzed_sql_results['select_expr']kode pada file. Anda bisa mendapatkan ini pada baris ~ 613 . Anda dapat melihat ini di bawah kode yang salah

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

Ganti saja kode yang salah dengan yang di bawah ini

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

Simpan file dan datang ke PhpMyAdmin .

Sekarang berfungsi dengan baik :)


39
Bekerja di Ubuntu 18,04 pada Agustus 2018 :)
Luiz Gonçalves

4
Tidak bekerja untuk saya di Ubuntu 16.04
SP Singh

2
Bekerja seperti pesona
Rameez Rami

2
Bekerja di Ubuntu 19.04. Terima kasih
murume

4
Trik kecil yang rapi untuk nano adalah, Anda bisa mengetik nano +613 filenameagar dapat membawa Anda langsung ke jalur tertentu.
SteffenNielsen

102

Saya menemukan jumlah PHP 7.2 ini () - kesalahan SYNTAX di sql.lib.php

Itu bekerja dengan baik pada konfigurasi saya:

Debian 9, 
PHP 7.2.3-1+0~20180306120016.19+stretch~1.gbp81bf3b (cli) (built: Mar  6 2018 12:00:19) ( NTS )

Buka /usr/share/phpmyadmin/libraries/sql.lib.php

Ubah baris : Pindahkan tanda kurung sebelum ==

|| ( (hitung ($ analy_sql_result ['select_expr'] ) == 1) && ($ analy_sql_result ['select_expr'] [0] == '*')))

di

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;
 }

Pada baris berikut Anda juga harus menghapus salah satu paranthesis penutup di akhir.
floppy

Terima kasih. Bagaimana kesalahan seperti itu bisa dirilis dengan paket yang dapat diinstal? Sedikit konyol.
Josh Morel

1
@ floppes Tidak, itu tidak benar. Anda TIDAK HARUS menghapus paranthesis penutup itu. Saya telah menguji cara Anda dan itu disebabkan server error. @Loquace's jawaban yang harus diterima.
Panjang

Terima kasih telah mengeja untuk kami dan menggunakan huruf tebal jika diperlukan. Baik jawaban ke-1 maupun ke-2 tidak cukup jelas bagi saya karena mereka tidak mengatakan apa yang mereka lakukan. Mengedit di nano tidak sama dengan gedit atau apa pun.
logicbloke

70

diuji pada Debian, harus berfungsi di Ubuntu:

1.) Pertama unduh file phpMyadmin terbaru.

2.) Hapus (buat cadangan) semua file versi sebelumnya yang terletak di /usr/share/phpmyadmindirektori.

3.) Buka kompresi untuk /usr/share/phpmyadmin/direktori semua file phpmyadmin terbaru.

4.) Ubah file libraries/vendor_config.phpdan ubah baris:

define('CONFIG_DIR', '');

untuk

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

dan

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

untuk

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

5.) restart server apache dan selesai.


3
Bekerja di Ubuntu 16.04
pjehan

7
Bekerja di Ubuntu 18,04
Simon Epskamp

5
Ubuntu 18.04, phpMyAdmin 4.8.0.1 - Saya harusmkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah

Ubuntu 16.04 hanya mengekstraknya agar /usr/share/phpmyadminberfungsi. Tidak perlu mengikuti langkah selanjutnya.
tushar.dahiwale

@ billynoah Sama di sini dengan instalasi baru. Saya membuat direktori tmp, mengaturnya ke 777, me-restart Apache, keluar dari phpMyAdmin dan kesalahan hilang.
JScarry

38

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

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

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

ini bekerja untuk saya


Ini bekerja untuk saya berdasarkan kondisi Anda telah memperbaiki kesalahan 500 internal diselesaikan, tetapi masalah kesalahan lama "phpmyadmin - count (): Parameter harus berupa array atau objek yang mengimplementasikan Countable" tidak terpecahkan.
shashik493

ini sepertinya bekerja untuk saya tetapi apakah ada yang tahu mengapa ini terjadi? Phpmyadmin saya berfungsi dengan baik dan tiba-tiba saya login hari ini dan ternyata ada masalah? Ubuntu 18.04.2 LTS
wheelsmanx

Berfungsi di UBuntu 18.04, sayap Nginx, php 7.2
PHPer

34
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

Ini bekerja untuk saya pada 18.04, terima kasih! Bahkan tidak perlu me-restart server - PHP diartikan 'hidup'.
Jelle Veraa

@JelleVeraa, Anda adalah kasus khusus hehehe;)
kaleem

32

Jika seseorang memiliki kesalahan yang sama di halaman ekspor DB (saya memiliki masalah ini di Ubuntu 18.04), kemudian ganti baris 551 dalam file /usr/share/phpmyadmin/libraries/plugin_interface.lib.phpdengan kode

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

Ini membantu saya juga, tetapi saya harus melakukan jawabannya dan ini. Ubuntu 18.04
Karuhanga

2
Ini berfungsi untuk menghilangkan pesan kesalahan, tapi saya pikir itu kemudian menghindari pernyataan if semuanya dan saya tidak mendapatkan apa-apa dalam ekspor basis data saya (dengan banyak kesalahan ditampilkan di bagian bawah setelah menyegarkan halaman setelah menyelesaikan basis data ekspor dengan jejak file kecil)
Warren Wang

Cium, cium, aku mencintaimu.
Noah Krasser

1
Pada Debian 9 ganti baris 551: if ($options != null && count($options) > 0) {dengan: if ($options != null) {maka Anda dapat mengekspor
BitDEVil2K16

Ini satu-satunya yang bekerja pada 18,04
TeT Psy


24

Lanjutkan langkah-langkah berikut di ubuntu-18.04:

Langkah 1) temukansql.lib.php

Ini akan menunjukkan sesuatu seperti:

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

Langkah 2) Buka terminal (Alt t) dan tulis:

sudo /usr/sbin/pma-configure

Langkah 3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php dan cari fungsi di bawah ini:

 

    function PMA_isRememberSortingOrder ($ analysis_sql_results)
     {
        return $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ analy_sql_results ['is_count']
                || $ analy_sql_results ['is_export'] $
                || $ analy_sql_results ['is_func']
                || $ dianalisis_sql_result ['is_analyse'])
            && $ analysis_sql_results ['select_from']
            && ((kosong ($ analysis_sql_result ['select_expr'])))
                || (hitung ($ analysis_sql_result ['select_expr'] == 1)
                    && ($analisa_sql_hasil ['select_expr'] [0] == '*')))
            && count ($ analy_sql_results ['select_tables']) == 1;
     }

Langkah 4) Ganti fungsi di atas dengan:

     function PMA_isRememberSortingOrder ($ analysis_sql_results)
     {
        return $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ analy_sql_results ['is_count']
                || $ analy_sql_results ['is_export'] $
                || $ analy_sql_results ['is_func']
                || $ dianalisis_sql_result ['is_analyse'])
            && $ analysis_sql_results ['select_from']
            && ((kosong ($ analysis_sql_result ['select_expr'])))
                || (hitung ($ analysis_sql_result ['select_expr']) == 1)
                    && ($analisa_sql_hasil ['select_expr'] [0] == '*'))
            && count ($ analy_sql_results ['select_tables']) == 1;
     }

Langkah 4) Simpan & tutup file dan perintah di bawah ini di terminal

sudo /usr/sbin/pma-secure

Langkah 5) sudo service mysql reload

Langkah 6) sudo service apache2 reload

Ini bekerja untuk saya .. Goodluck


Isi ulang MySQL dan apache tidak diperlukan.
Tacsiazuma

Saya mendapat pesan ini setelah modifikasi file: "- root @ Lalla: ~ # / usr / sbin / pma-secure - Mengamankan instalasi phpMyAdmin ... - Skrip penyiapan tidak akan dapat menulis konfigurasi. - root @ Lalla: ~ # "
cl-r

22

buka file ini: '/usr/share/phpmyadmin/libraries/sql.lib.php'

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

tekan ctrl + w untuk mencari (hitung ($ analysis_sql_result ['select_expr'] == 1)

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

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

Mulai ulang server

 sudo service apache2 restart

apalagi, jika Anda masih menghadapi masalah yang sama maka lakukan hal berikut.

buka file ini /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

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

Cari: if ($ options! = Null && count ($ options)> 0) {

Ctrl+w : if ($options != null && count($options) > 0) {

ganti dengan kode berikut

if ($options != null && count((array)$options) > 0) {

sekarang simpan dan mulai ulang server

sudo /etc/init.d/apache2 restart

Anda cukup menambahkan penjepit. Tapi terima kasih. Saya menghapus penjepit ekstra di akhir baris
redestructa

Saya telah menginstal xampp pada mac saya, saya tidak dapat menemukan folder / usr / share / phpmyadmin dan karenanya '/usr/share/phpmyadmin/libraries/sql.lib.php' dosis ini ada untuk saya, dapatkah Anda membantu?
Saurabh Verma

18

Saya pikir pilihan terbaik adalah memperbarui Phpmyadmin ke versi yang sudah diperbaiki.

Sampai diterbitkan sebagai deb, Anda bisa melakukannya seperti di @ crimson-501 jawaban yang akan saya salin di bawah ini:

  • Langkah pertama Anda adalah memasang PMA (phpMyAdmin) dari repo resmi Ubuntu: apt-get install phpmyadmin .
  • Selanjutnya, masuk ke direktori usr / share: cd /usr/share .
  • Ketiga, hapus direktori phpmyadmin: rm -rf phpmyadmin .
  • Sekarang kita perlu mengunduh versi PMA terbaru ke sistem kita (Perhatikan bahwa Anda perlu wget :) apt-get install wget): wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" Biarkan saya menjelaskan argumen dari perintah ini, -P mendefinisikan path dan "the link.zip" saat ini (17/7/18) ) versi terbaru PMA. Anda dapat menemukan tautan itu di SINI .
  • Untuk langkah berikutnya Anda perlu unzip ( apt-get install unzip): unzip phpMyAdmin-4.9.4-english.zip. Kami baru saja membuka ritsleting PMA, sekarang kami akan memindahkannya ke rumah final.
  • Mari kita gunakan perintah cp(copy) untuk memindahkan file kita! Perhatikan bahwa kita harus menambahkan -rargumen karena ini adalah folder. cp -r phpMyAdmin-4.9.4-english phpmyadmin.
  • Sekarang saatnya untuk membersihkan: rm -rf phpMyAdmin-4.9.4-english.

Terus membaca!

Sekarang Anda mungkin melihat dua kesalahan setelah masuk ke PMA.

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.

Namun, masalah ini relatif mudah diperbaiki. Untuk masalah pertama yang harus Anda lakukan adalah mengambil editor pilihan Anda dan mengedit /usr/share/phpmyadmin/config.inc.phptetapi ada masalah, kami menghapusnya! Tidak apa-apa, yang harus Anda lakukan adalah: cd /usr/share/phpmyadmin&cp config.sample.inc.php config.inc.php .

Contoh Entri Rahasia Variabel phpMyAdmin Blowfish:

/*
 * 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! */

Sekarang simpan dan tutup file.

  • Sekarang kita akan membuat direktori tmp untuk PMA: mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. Perintah terakhir memungkinkan server web Apache untuk memiliki direktori tmp dan mengedit isinya.

Jawaban ini sangat berguna! Memecahkan masalah bagi saya! Terima kasih! PS: Anda dapat menemukan generator blowfish online.
lucbas

Dan solusinya di tautan ini: devanswers.co/manually-upgrade-phpmyadmin mengikuti rencana serupa, kecuali mengganti langkah blowfish dengan yang lebih mudah ..
gwideman

Ini adalah solusi yang jauh lebih baik dibandingkan dengan mengedit file konfigurasi versi lama.
andromeda

17

Coba ganti fungsi ini dalam file: /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;
}

Terima kasih! baris ini adalah di mana saya salah pada akhir di mana saya memiliki 3 bracket penutupan yang ditanamkan saya membutuhkan 2 kurung penutup saja && ($ analy_sql_results ['select_expr'] [0] == '*')). Bekerja pada phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin

17

Ubuntu 18,04 LTS

Ini adalah langkah-langkah yang berhasil bagi saya. Banyak, banyak terima kasih kepada William Desportes untuk menyediakan pembaruan otomatis pada PPA Ubuntu mereka.

Langkah 1 ( dari pos William Desportes )
$sudo add-apt-repository ppa:phpmyadmin/ppa

Langkah 2
$sudo apt-get --with-new-pkgs upgrade

Langkah 3
$sudo service mysql restart

Jika Anda memiliki masalah me-restart mysql, Anda juga dapat memulai kembali dengan urutan berikut
$ sudo service mysql stop;
$sudo service mysql start;


2
Memecahkan masalah pada Ubuntu 18.04 LTS. Seharusnya jawaban yang diterima.
Mulai

15

Ubuntu 18.10 (Desember, 2018)

Jalur 613, 614, 615, ganti dengan:

        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;

Ini bekerja untuk saya .. Tidak perlu meng-upgrade mysql atau apa pun ... Terima kasih @ole
Nitin Vaghani

15

Bekerja untuk saya .. Ubuntu 18.04

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

Temukan count($analyzed_sql_results['select_expr']kode pada file. Anda bisa mendapatkan ini pada baris ~ 613.

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

Cukup ganti dengan kode:

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

Simpan file dan muat ulang PhpMyAdmin.

Selesai !!!


1
Pada baris 613, ubah ke|| (count($analyzed_sql_results['select_expr']) == 1
tnductam

11

Untuk versi phpmyadmin saya (4.6.6deb5), saya menemukan baris 613, dan menyadari bahwa penghitungan () tanda kurung tidak ditutup dengan benar. Untuk memperbaiki ini sementara hingga rilis berikutnya, cukup ubah:

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

untuk:

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

Ada tanda kurung yang hilang untuk menutup pemanggilan fungsi || (hitung ($ analysis_sql_results ['select_expr']) == 1 adalah pernyataan yang benar
Ruberandinda Patience

path file adalah "/usr/share/phpmyadmin/libraries/sql.lib.php" bagi mereka yang tidak tahu di mana menemukannya.
Ali Imran

9

Ini diperbaiki dalam versi PHPMyAdmin yang lebih baru. Repositori Perangkat Lunak Ubuntu untuk Ubuntu 18.04.2 menampung versi 4.6.6.5, sementara mereka saat ini di 4.9.0.1. Memperbarui instalasi PHPMyAdmin Anda akan memperbaiki masalah ini, tetapi mungkin terbukti lebih berisiko daripada hanya mengedit satu baris kode itu. Inilah cara saya melakukannya di Server Ubuntu saya. Langkah-langkah pada dasarnya sama (dengan jalur berbeda) untuk semua sistem operasi.

  1. Unduh PHPMyAdmin .
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip
unzip phpMyAdmin-4.9.0.1-all-languages.zip
  1. Cadangkan instalasi PHPMyAdmin lama Anda.
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. Jatuhkan PHPMyAdmin baru Anda di PHPMyAdmin lama Anda
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

Verifikasi bahwa itu berfungsi. Jika tidak, well ... Anda memiliki cadangan, jadi kembalikan dan edit baris yang rusak secara manual. Dalam pengalaman pribadi saya, saya menemukan setelah melakukan ini bahwa versi 4.6.6.5 tidak hanya penuh dengan bug, tetapi juga sangat lambat dibandingkan dengan 4.9.0.1 yang baru. Peningkatan kecepatan adalah sihir murni untuk sesuatu yang menurut saya berkualitas "WordPress".


Saya akan mengganti urutan 1 dan 2, dan sebelum wget saya akan cd / tmp tetapi selain itu, sangat baik, terima kasih.
Chris

Ini bekerja untuk saya, terima kasih atas solusi sederhana!
uestcfei

8

Berfungsi di UBUNTU 16.04.3 Buka saja

usr / share / libraries / sql.lib.php

memodifikasi

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

Untuk

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


5

Tingkatkan ke phpMyAdmin 4.8.3. ini memecahkan masalah kompatibilitas PHP 7.2


5

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

Ini yang saya ubah di baris 614 dan phpmyadmin berfungsi tanpa kesalahan. Perlu satu (sebelum dihitung, dan satu )sebelum ==. Itu dia.


4

Edit file '/usr/share/phpmyadmin/libraries/sql.lib.php' Ganti: (buat cadangan)

"|| (count($analyzed_sql_results['select_expr'] == 1) 
&&($analyzed_sql_results['select_expr'][0] == '*'))) 
&& count($analyzed_sql_results['select_tables']) == 1;"

Dengan:

"|| (count($analyzed_sql_results['select_expr']) == 1) 
&& ($analyzed_sql_results['select_expr'][0] == '*') 
&& (count($analyzed_sql_results['select_tables']) == 1));"

3

Hai yang berikut ini menyelesaikan masalah saya yang sama sekali (impor / ekspor dan sebagainya):

Perbaiki Bug Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

jadi ... di bawah ubuntu 18.04, mysql, php7.2: Terminal:

sudo gedit /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

Temukan baris berikut (ctrl + f):

if ($options != null && count($options) > 0) {

itu pada baris # 551 untukku

dan ubah untuk mengikuti:

if ($options != null && count((array)$options) > 0) {

ctrl + s untuk menyimpan perubahan

dan di terminal: ctrl + c untuk mendapatkan kembali promt ...

dan: sudo systemctl restart apache2

"Saya pikir dalam versi php baru. Itu tidak bisa menggunakan count () atau sizeof () dengan tipe un array. Memaksa parameter ke array adalah cara mudah untuk menyelesaikan bug ini, ..."

Terima kasih untuk penulis aslinya untuk pemecahan masalah! Saya mencoba membagikannya!


3

Buka /usr/share/phpmyadmin/sql.lib.phpfile dengan hak tinggi, dan edit berikut ini di fungsi PMA_isRememberSortingOrder():

  1. ~ baris 613 untuk memperbaiki kesalahan awal:
    • Menggantikan || count($analyzed_sql_results['select_expr'] == 1)
    • Dengan || (count($analyzed_sql_results['select_expr']) == 1)
  2. ~ baris 614 untuk memperbaiki 500 kesalahan yang mungkin akan mengikuti:
    • Menggantikan && ($analyzed_sql_results['select_expr'][0] == '*')))
    • Dengan && ($analyzed_sql_results['select_expr'][0] == '*'))

Restart server Apache Anda: sudo service apache2 restart.

Diuji pada Linux Mint 19.1 berdasarkan Ubuntu 18.04, dengan PhpMyAdmin 4.6.6 dan PHP 7.2.


3

Saya mencoba semua solusi di atas tetapi tidak berhasil untuk saya.

Coba ini:-

Instal versi PHP yang diperlukan (dalam kasus saya 7.0) dan kemudian di terminal, ketik

sudo update-alternatives --config php

Output akan seperti ini: -

masukkan deskripsi gambar di sini

Kemudian Anda dapat beralih ke versi PHP apa pun dengan hanya memasukkan nomor pilihan (dalam kasus saya 1).

Semoga ini bisa membantu lainnya - :)


2

Saya memiliki masalah ini ketika menggunakan windows dan respons di atas menyelesaikannya untuk saya, namun ketika saya beralih ke linux (ubuntu 18.04 LTS) saya memiliki masalah yang sama dan tidak dapat menemukan cara untuk menyelesaikannya karena saya tidak melihat file tersebut '/usr/share/phpmyadmin/libraries/sql.lib.php'.

File sql.lib.php ini tidak ada di folder share atau folder phpmyadmin / libraries dari direktori / opt / lampp saya - karena saya menggunakan xampp di ubuntu saya. Berdasarkan pembaruan yang dibuat untuk xampp (karena saya menggunakan instalasi terbaru seperti sekarang) setup.

Jawabannya masih untuk mengganti: (count($analyzed_sql_results['select_expr'] == 1)

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

Namun file yang dicari Sql.phpditemukan di/opt/lampp/phpmyadmin/libraries/classes/Sql.php

Pembaruan di masa depan atau jika Anda masih belum menemukannya: gunakan grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadminuntuk mencari dokumen yang cocok di direktori Anda dan edit sesuai


2

Ganti Fungsi:

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;
}

2

Edit file /usr/share/phpmyadmin/libraries/sql.lib.php

Lihat kesalahan pada kesalahan Anda

./libraries/sql.lib.php#2038: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#1984: PMA_executeQueryAndGetQueryResponse(

pergi ke baris ini dan hapus panggilan fungsi.

Ini bekerja untuk saya.


2

Saya melihat bahwa Anda semua sedang mengedit atau memperbarui dari file kami

Bagi mereka yang menginginkan pembaruan otomatis, Anda dapat menggunakan PPA Ubuntu kami

sudo add-apt-repository ppa: phpmyadmin / ppa

Dan untuk pengguna Debian Anda harus menunggu versi Debian berikutnya atau menggunakan PPA

Ubuntu 20 memiliki phpMyAdmin 4.9 atau versi yang lebih baru

Masalah Debian di pelacak kami

Masalah yang dapat dihitung pada pelacak kami

Pembaruan TLDR ke versi 4.9 atau 5.0 terbaru untuk mengatasi masalah ini.


2

Ini bekerja dengan baik untuk saya di Ubuntu 18.04 .

Buka file sql.lib.php

nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

Ganti kode yang salah ini:

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

Yang ini:

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

Simpan file.

Mulai ulang server Anda dengan:

sudo service apache2 restart

Dan segarkan PhpMyAdmin


1

Pada Ubuntu 18.04 dengan MariaDb dan Nginx, saya menyelesaikannya dengan memperbarui file /usr/share/phpmyadmin/libraries/sql.lib.php sebagai berikut:

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

Jawaban yang disebutkan oleh @Nguyen melempar kesalahan 500 yang mengatakan:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.