2016-03-29 18 views
0

Benim kod şu şekildedir: java olarakBirleştirme dizeleri olmadan postgre veritabanına nasıl eklenir?

$sql = "INSERT INTO oraculo VALUES(".$name.$pass.")"; 
    pg_query($dbconn, $sql); 

i (eğer im sağ sql enjeksiyon önlemek için) concatenate dizeleri olmadan değerlerini eklemek için PreparedStament kullanın. PHP'de böyle bir şey yapmak mümkün mü? Im böyle bir şey yapmak istiyorum: Sen PHP'de Postgres'e hazırlanmış deyimleri yürütmek için pg_prepare kullanabilirsiniz

$sql = "INSERT INTO oraculo VALUES(?, ?)"; 
//set the value of first '?' 
setValue(1, "somename"); 
//set the value of second '?' 
setValue(2, "somepass"); 
pg_query($dbconn, $sql); 
+0

[Oku] (http://php.net/manual/en/security.database.sql-injection.php):

Yani kod gibi görünür. [Gerçekleşen] (http://php.net/manual/en/function.pg-query-params.php). [El] (http://php.net/manual/en/book.pdo.php). Her ne kadar adaletli olsa da PHP'nin dökümantasyonu oldukça kötüdür - pg_query için dokümanlar bu sayfalara işaret eden yüksek sesli uyarılara sahip olmalıdır. –

cevap

0

.

pg_prepare($dbconn, "login", 'SELECT * FROM shops WHERE name = $1'); 
$rs = pg_execute($dbconn, "login", array("somename", "somepass")); 
+1

Veya 'pg_query_params' komutunu kullanın. Ya da, 10 yıl boyunca kullanımdan kaldırılan mysqli ve pg sürücülerini değiştiren PDO'yu biliyorsunuz ... –

+0

@CraigRinger için üzgünüm - PHP'nin bir devri olmadığını biliyorum;) - PDO, pg_'den vazgeçmedi * sürücüler. Performansları ve bazı özellikleri pahasına tüm sürücüler için ortak bir arayüz önerir. PHP’nin pg_ * sürümü hala devam ediyor ve zaman içinde yeni özelliklere sahip. Projenizin sadece PostgreSQL kullanacağını biliyorsanız, bunlar tercih edilmelidir. – greg

+1

@greg Tamam, teşekkürler, bilmek güzel. Dokümanlardan ve tartışmalardan, PDO'nun bireysel sürücüleri değiştirmek yerine onları değiştirmeyi amaçladığı izlenimindeydim. Karışıklık için özür dilerim. Http://php.net/manual/en/security.database.sql-injection.php ve http: http://php.net/manual/en/security.database.sql-injection.php adresine işaret eden bir GIANT WARNING verememeye çalışırken, PHP belgelerinin şok edici bir şekilde eksik olduğuna dair sözlerime katılıyorum. //php.net/manual/en/function.pg-query-params.php. Çoğu durumda "pg_query_params() tercih edilmeli" diyor. ama bu tür sorulara verilen açık bir ifadeyle çok zayıf bir ifade. –

İlgili konular