MySQL Query dengan Serialized Array Filtration
Dalam pangkalan data MySQL, mungkin perlu untuk mendapatkan semula rekod berdasarkan item tertentu dalam bersiri tatasusunan yang disimpan dalam medan. Walau bagaimanapun, perbandingan item langsung dalam tatasusunan bersiri tidak disokong oleh bahasa SQL.
Walau bagaimanapun, terdapat dua pendekatan yang berpotensi untuk menangani cabaran ini:
Array Bersiri sebagai Rentetan
Memandangkan tatasusunan bersiri pada asasnya ialah rentetan, anda boleh memanfaatkan klausa LIKE untuk memadankan dan memilih rekod. Contohnya:
SELECT * FROM table WHERE (an item in my array) LIKE '%$n%'
Pendekatan ini melibatkan membina semula tatasusunan bersiri menjadi rentetan menggunakan fungsi unserialize() PHP, mengindeks ke dalam tatasusunan untuk menyemak item yang dikehendaki, dan kemudian mensirikannya semula dengan serialize() .
Penormalan Pangkalan Data
Jika pertanyaan kerap memerlukan mengakses item individu dalam tatasusunan bersiri, adalah sangat disyorkan untuk menormalkan struktur data dengan menyimpan setiap item sebagai baris yang berasingan dalam jadual yang berkaitan. Ini memberikan prestasi yang lebih baik dan fleksibiliti pertanyaan, kerana ia menghapuskan keperluan untuk penghuraian rentetan yang berpotensi kompleks dan operasi LIKE.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menapis rekod MySQL berdasarkan item dalam tatasusunan bersiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!