«prepared-statement» etiketlenmiş sorular

Hazırlanmış İfade (veya parametreli ifade), performansı artırmaya ve SQL enjeksiyon saldırılarını azaltmaya yarayan önceden derlenmiş bir SQL ifadesidir. Hazırlanan ifadeler birçok popüler İlişkisel Veritabanı Yönetim Sistemlerinde kullanılmaktadır.

21
Bir diziyi IN () koşuluna bağlayabilir miyim?
PDO kullanarak bir yer tutucusuna bir değer dizisi bağlamak mümkün olup olmadığını bilmek merak ediyorum. Buradaki kullanım örneği, bir değerle kullanmak için bir değer dizisi geçirmeye çalışıyorIN() koşulla . Böyle bir şey yapabilmek istiyorum: <?php $ids=array(1,2,3,7,8,9); $db = new PDO(...); $stmt = $db->prepare( 'SELECT * FROM table WHERE id IN(:an_array)' …

30
PreparedStatement IN yan tümcesi alternatifleri?
SQL enjeksiyon saldırısı güvenlik sorunları nedeniyle birden çok değer için desteklenmeyen, INörnekleriyle bir SQL yan tümcesi kullanmak için en iyi geçici çözümler nelerdir java.sql.PreparedStatement: Bir ?yer tutucu, değerler listesi yerine bir değeri temsil eder. Aşağıdaki SQL deyimini düşünün: SELECT my_column FROM my_table where search_column IN (?) Kullanım preparedStatement.setString( 1, "'A', …

6
Hazırlanan ifadede "like" joker karakterini kullanma
MySQL veritabanı sorguları yürütmek için hazırlanan ifadeler kullanıyorum. Ve bir tür anahtar kelimeye dayalı bir arama işlevselliği uygulamak istiyorum. Bunun için LIKEanahtar kelimeyi kullanmam lazım , biliyorum. Ve ben de daha önce hazırlanmış ifadeler kullandık, ama nasıl kullanılacağını bilmiyorum LIKEçünkü aşağıdaki koddan nereye ekleyeceğim 'keyword%'? Doğrudan pstmt.setString(1, notes)as (1, notes+"%")ya …

9
Hazırlanan ifadeler SQL enjeksiyon saldırılarından nasıl korunabilir?
Hazırlanan ifadeler SQL enjeksiyon saldırılarını önlememize nasıl yardımcı olur ? Wikipedia diyor ki: Hazırlanan ifadeler SQL enjeksiyonuna karşı dayanıklıdır, çünkü daha sonra farklı bir protokol kullanılarak iletilen parametre değerlerinin doğru bir şekilde kaçmasına gerek yoktur. Özgün ifade şablonu harici girdiden türetilmemişse, SQL yerleştirme yapılamaz. Sebebini çok iyi göremiyorum. Kolay İngilizce …

13
PreparedStatement'ın SQL'ini nasıl edinebilirim?
Aşağıdaki yöntem imzası ile genel bir Java yöntemi var: private static ResultSet runSQLResultSet(String sql, Object... queryParams) Bir bağlantı açar PreparedStatement, sql deyimini ve queryParamsdeğişken uzunluk dizisindeki parametreleri kullanarak oluşturur , çalıştırır, ResultSet(a CachedRowSetImpl) 'da önbelleğe alır , bağlantıyı kapatır ve önbelleğe alınan sonuç kümesini döndürür. Hata günlükleri yönteminde özel durum …

22
PDO Hazırlık Tek bir sorguya birden çok satır ekler
Şu anda tek bir sorguda birden çok değer satırı eklemek için MySQL SQL bu tür kullanıyorum: INSERT INTO `tbl` (`key1`,`key2`) VALUES ('r1v1','r1v2'),('r2v1','r2v2'),... PDO okumalarında, hazırlanan ifadelerin kullanımı bana statik sorgulardan daha iyi bir güvenlik sağlamalıdır. Bu nedenle hazırlanan ifadeleri kullanarak "bir sorgu kullanarak birden çok değer satırı ekleme" oluşturmak mümkün …


1
mysqli_fetch_assoc () parametre / Çağrı bir üye işlevi için bind_param () hataları bekler. Gerçek mysql hatası nasıl alınır ve düzeltilir?
Yerel / geliştirme ortamımda, MySQLi sorgusu iyi çalışıyor. Ancak, bunu web barındırma ortamıma yüklediğimde şu hatayı alıyorum: Ölümcül hata: ... içindeki nesne olmayan bir üye işlevine bind_param () çağırın ... İşte kod: global $mysqli; $stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?"); $stmt->bind_param('i', $cur_id); $stmt->execute(); $stmt->bind_result($uid, $desc); …


2
PreparedStatement'ı birden çok kez kullanmak
PreparedStatement'ın herhangi bir havuz olmadan tek bir ortak bağlantıyla kullanılması durumunda, hazırlanan ifadelerin gücünü koruyan her dml / sql işlemi için bir örnek oluşturabilir miyim? Demek istediğim: for (int i=0; i<1000; i++) { PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setObject(1, someValue); preparedStatement.executeQuery(); preparedStatement.close(); } onun yerine: PreparedStatement preparedStatement = connection.prepareStatement(sql); for (int …

6
Java: PreparedStatement ile MySQL'e birden çok satır ekleyin
Java kullanarak bir MySQL tablosuna aynı anda birden çok satır eklemek istiyorum. Satır sayısı dinamiktir. Geçmişte yapıyordum ... for (String element : array) { myStatement.setString(1, element[0]); myStatement.setString(2, element[1]); myStatement.executeUpdate(); } MySQL destekli sözdizimini kullanmak için bunu optimize etmek istiyorum: INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...] …

5
PreparedStatement setNull (..)
Java PreparedStatement, açık bir şekilde Null değeri ayarlama olanağı sağlar. Bu olasılık: prepStmt.setNull(parameterIndex, Types.VARCHAR); Bu çağrının anlam bilgisi, belirli bir setType'ı null parametresi ile kullanırken aynı mıdır? prepStmt.setString(null); ?

3
Oracle JDBC Optimizasyonu: Bir Bahar önyükleme Uygulamasında PreparedStatement önbelleğini etkinleştir
Oracle veritabanına bağlı bir Spring Boot REST uygulamam var. JDBC'yi JdbcTemplate kullanarak kullanıyoruz. Oracle veritabanı özellikleri şu 3 application.properties ayarıyla elde edilir : spring.datasource.url spring.datasource.username spring.datasource.password Bu uygulama HikariCP kullanıyor. HikariCP web sitesinden, JDBC sürücüsü bunu yapmak için en iyi kurulum olduğundan bu havuzun PreparedStatements'ı önbelleğe almadığını öğrendim. Şimdi, bunları …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.