Neden bu sorgu var.?

4 Cevap

Ben aşağıdaki sorgu neden bilmek istiyorum. ve "" in ". $ _POST ['tarih']." vb

$query = "INSERT INTO eventcal ('eventDate','eventTitle','eventContent','user',
'user_id') VALUES('".$_POST['date']."','".addslashes($_POST['eventTitle'])."',
'".addslashes($_POST['eventContent'])."')";     

Ben aşağıdakilere değiştirirseniz, herhangi bir fark yapacak?

VALUES('$_POST['date']','addslashes($_POST['eventTitle'])',
'addslashes($_POST['eventContent'])')

Şimdiden teşekkürler.

4 Cevap

Bu dizilim PHP formu (tırnak dizeleri sonuna işaret) olduğunu. JavaScript ve diğer birçok dilde de birleştirir + karakter.

echo "hello" . " " . "world!"; // Outputs 'hello world'

Evet, bu değişikliği yapmak büyük ölçüde anlamını değiştirmek olur.

Son olarak, bu date düzgün kaçtı değil çünkü bir severe SQL enjeksiyon saldırısı açıktır.

Her zaman girdileri ve mümkünse parametreli sorguları kullanın.

"Nokta" operatörü dize birleştirme için PHP'nin operatörüdür. Ben addslashes işlevini kullanarak ilk örnekte ne var daha iyi bir fikir olduğunu düşünüyorum ama yine de sadece değişkenleri destekler PHP'nin dize enterpolasyon olarak dize birleştirme kullanmak gerekir.

Tek tırnak değişken interpolasyon inhibe, ve de dizi endeksinde kullanılan tek tırnak string sona olacaktır.

Ayrıca, yerine bu gibi değerleri ekleyerek sorgu parametrizasyonunu destekleyen bir kitaplığı kullanın.

Evet, sadece değişkenler kendi fonksiyonları, ikinci kod bloğunda idam olmayacak anlamına gelir ki çift tırnak içinde çözümlenir.