Selesaikan Masalah Fungsi KATA LALUAN dalam Pelayan MySQL 8.0
Apabila cuba untuk melaksanakan fungsi KATA LALUan dalam Pelayan MySQL versi 8.0.12, senario tertentu mungkin mencetuskan ralat. Artikel ini bertujuan untuk menangani isu tersebut dan menyediakan penyelesaian yang berdaya maju.
Kod Ralat 1064
Jika anda menghadapi ralat "Kod Ralat: 1064. Anda mempunyai ralat dalam sintaks SQL anda...", ini menunjukkan masalah dengan sintaks pertanyaan anda. Khususnya, sintaks fungsi PASSWORD telah berubah dalam Pelayan MySQL versi 8.0.
Sintaks Baharu
Dengan MySQL Server 8.0, fungsi PASSWORD telah ditamatkan penggunaannya dan digantikan dengan yang berbeza mekanisme pencincangan. Untuk mengekalkan keserasian, anda harus menggunakan sintaks berikut untuk menjana cincang yang setara dengan yang dihasilkan oleh fungsi PASSWORD dalam versi sebelumnya:
CONCAT('*', UPPER(SHA1(UNHEX(SHA1('my_password')))))
Contoh
Dalam pertanyaan yang disediakan, "pwd = PASSWORD('2018')" mewakili perbandingan lajur "pwd" dengan kata laluan statik. Untuk mendapatkan semula pengguna dengan kata laluan '2018' menggunakan sintaks baharu, anda boleh mengubah suai pertanyaan seperti berikut:
SELECT * FROM users WHERE login = 'FABIO' AND pwd = CONCAT('*', UPPER(SHA1(UNHEX(SHA1('2018'))))) LIMIT 0, 50000
Atas ialah kandungan terperinci Cara Membetulkan Isu Fungsi KATA LALUAN dalam Pelayan MySQL 8.0: Panduan Sintaks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!