Latihan 1 dari materi SQL Injection Prevention di Security — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Tabel users sudah berisi tiga user: admin, budi, dan siti. Ambil hanya user budi lewat prepared statement, cara yang sama dengan driver database mengirim parameterized query: query-nya dikirim dengan placeholder ?, dan nilainya dikirim terpisah.
PREPARE cari_user FROM 'SELECT * FROM users WHERE username = ?'; menyiapkan query dengan placeholder ? di tempat username.
SET @nama = 'budi'; menyimpan nilainya di variabel.
EXECUTE cari_user USING @nama; menjalankan query-nya dengan nilai itu terikat ke ?.
Yang dicek: hasilnya tepat 1 baris, kolom username ikut ada, baris pertamanya budi, query-nya disiapkan dengan ? dan dijalankan dengan EXECUTE ... USING @variabel, dan 'budi' gak ditulis langsung di dalam WHERE. Nilai yang terikat ke ? selalu dibaca sebagai satu nilai utuh, jadi payload seperti ' OR 1=1 -- di @nama cuma mencari user yang namanya persis begitu.