Dalam SQL, nilai string perlu dikutip:
VALUES ('value1', 'value2')"
Saat Anda menggunakan variabel:
VALUES ($var1, $var2)");
Mereka tidak dikutip ... kecuali tanda kutip itu ada dalam nilai itu sendiri.
Jadi if $var1 = 'value1'; $var2 = 'value2'
kemudian (setelah variabel diinterpolasi dalam string Anda) SQL Anda terlihat seperti ini:
VALUES (value1, value2)"
Anda dapat menyelesaikan masalah langsung Anda dengan menambahkan kutipan:
VALUES ('$var1', '$var2')");
tetapi ini tidak memperbaiki kerentanan keamanan utama . Anda dan memungkinkan data Anda memecah kueri dengan cara yang berbeda.
Anda harus menghindari membuat pernyataan SQL dengan merakit string dari variabel . Cara ini mengarah ke lubang keamanan SQL Injection. Gunakan antarmuka yang mendukung argumen terikat . Mereka akan menangani mengutip dan melarikan diri untuk Anda.