php ayrılmış mysql deyim sorgu

4 Cevap php

So, I can run the following statements from within mysql itself successfully.

SET @fname = 'point1';
SELECT * FROM country WHERE name=@fname;`

Bu gibi php sorgu geçmek ve onu çalıştırmayı denediğinizde ama, ben ikinci satırda bir hata alıyorum

$query = "SET @fname = 'point1';";

$query  .=  "SELECT * FROM country WHERE name=@fname;";

4 Cevap

Ben neden başarısız belirli değilim, ama yerine MySQL değişkenler ile yazmak yerine, neden PHP değişkenleri kullanmak değil?

Diğer bir deyişle,

$fname = 'point1';
$query = "select * from country where name = '$fname'";

Ve SQL enjeksiyon karşı normal bir uyarı elbette geçerlidir.

Sen özel bir işlevi kullanmadan PHP'nin MySQL kütüphaneleri aracılığıyla çoklu ifadeleri çalıştıramazsınız. Ama SQL değişken bağlantı yoluyla devam böylece yerine dizeleri bitiştirmek ve bir kez çalışan, ayrı ayrı her bir deyimini yürütmek gerekir.

PHP'nin MySQL sürücüleri birden fazla sorgu bir güvenlik önlemi olarak, tek bir sorgu işlevi çağrısından yürütülecek izin vermez. Bu klasik XKCD Bobby Tables saldırı etkisiz hale SQL enjeksiyon saldırıları kötü karşı kısmi azaltma bulunuyor.

Yani enjeksiyon saldırıları imkansız hale getirdiğini söylemek değil - sadece saldırıların çok sorgu sürümü imkansız hale getirir.

Ayrıca this ve mysql_query() doc sayfasından this yorumlarına bakabilirsiniz.