Dollar ($) Log Masuk Rentetan Kata Laluan Disalahtafsirkan sebagai Pembolehubah
Apabila menghadapi masalah sambungan dengan aplikasi web PHP/MySQL walaupun capaian pangkalan data berjaya dengan bukti kelayakan yang sama melalui shell dan phpMyAdmin, adalah penting untuk mempertimbangkan kemungkinan isu dalam kod.
Punca Masalah
Dalam senario ini, rentetan kata laluan mengandungi tanda dolar ($), yang ditafsirkan PHP sebagai pembolehubah. Akibatnya, daripada menghantar kata laluan yang dimaksudkan "mypas$word," aplikasi menghantar "mypas," yang membawa kepada pengesahan pangkalan data yang gagal.
Penyelesaian
Masalah telah diselesaikan dengan melepaskan tanda dolar dengan garis miring ke belakang (). Walau bagaimanapun, penyelesaian yang lebih dipercayai dan cekap ialah menggunakan rentetan petikan tunggal untuk kata laluan dan data lain yang tidak sepatutnya menjalani pemprosesan pembolehubah PHP.
Melepaskan Tanda Dolar
Menggunakan garis miring ke belakang untuk melepaskan tanda dolar membolehkan PHP menganggapnya sebagai aksara literal dan bukannya arahan untuk menggantikan pembolehubah. Pendekatan ini adalah memadai tetapi tidak optimum, kerana ia memperkenalkan sintaks tambahan dan potensi ralat pengguna.
Rentetan Petikan Tunggal
Rentetan petikan tunggal tidak diinterpolasi dan dianggap secara verbatim . Ini bermakna PHP tidak akan cuba memproses aksara khas atau mengembangkan pembolehubah dalam rentetan petikan tunggal, memastikan pemeliharaan data tepat yang bertujuan untuk disimpan.
Pertimbangan Pangkalan Data
Jika kata laluan diambil daripada pangkalan data, prinsip yang sama digunakan. Kata laluan hendaklah disimpan dalam satu rentetan petikan dalam pangkalan data untuk mengelakkan sebarang salah tafsir oleh PHP.
Amalan Terbaik
Untuk mengelakkan jenis isu ini, ia disyorkan untuk mematuhi amalan terbaik berikut:
Atas ialah kandungan terperinci Mengapa Skrip PHP Saya Gagal Disambungkan ke MySQL Apabila Kata Laluan Mengandungi Tanda Dolar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!