Pengoptimuman Penyata IN untuk PDO dengan MySQL
Apabila mengikat tatasusunan nilai pada pernyataan PDO untuk digunakan dalam pernyataan IN dalam MySQL, adalah penting untuk memastikan bahawa nilai diasingkan dengan betul. Walau bagaimanapun, secara lalai, PDO menganggap pernyataan IN sebagai rentetan tunggal, yang boleh membawa kepada hasil yang salah.
Penyelesaian terletak pada membina pertanyaan secara manual, seperti yang dinyatakan dalam soalan sebelumnya. Walau bagaimanapun, ini bukan penyelesaian yang ideal, terutamanya untuk pertanyaan dinamik dengan senarai bersaiz berubah-ubah.
Penyelesaian Alternatif:
SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE find_in_set(CAST(products.id AS CHAR), :products)
Berikut ialah contoh fungsi sedemikian:
CREATE FUNCTION split_str(s TEXT, delim CHAR) RETURNS SET<CHAR> BEGIN RETURN (SELECT explode(s, delim) X FROM DUAL); END
Kemudian, anda boleh menggunakan fungsi tersebut dalam anda pertanyaan:
SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE products.id IN (SELECT X FROM split_str(:products, ','))
Penyelesaian alternatif ini membolehkan anda mengendalikan pernyataan IN dalam PDO dengan MySQL dengan lebih cekap, memastikan keputusan yang tepat dan prestasi optimum.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Penyata PDO IN untuk MySQL dengan Senarai Nilai Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!