DBI modülünden Perl için PHP'nin mysql_real_escape_string()
'i ile aynı işlevi gören bir işlev var mı?Perl's DBI için PHP'nin mysql_real_escape_string() bir eşdeğer var mı?
cevap
placeholders and bind values kullanmalısınız.
:
quote gibiuse SQL::Abstract; ... my $sqa = SQL::Abstract->new; my ($owner, $account_type) = @_; # from inputs my ($sql, @bind) = $sqa->select('account_data', # table [qw(account_id balance)], # fields { account_owner => $owner, account_type => $account_type }, # "where" ); my $sth = $dbh->prepare_cached($sql); # reuse SQL if we can $sth->execute(@bind); # execute it for this query
. Güzel. –
?
Ayrıca, utf8 hakkında endişeniz varsa, DBD::MySQL belgelerini okumanızı tavsiye ederim.
etmeyin. Kaçış. SQL.
Yapmayın. Alıntı. SQL. SQL yer tutucularını/parametrelerini kullanın (?
). SQL tablosu ve tutucuları ile temsil veri değerlerinin yapısı tümüyle ayrı veritabanına gönderilen, böylece (veritabanı motoru veya DBD modülünde bir hata engelleme) veri değerleri SQL olarak yorumlanabilir kesinlikle hiçbir yolu yoktur edilir emreder. Eğer SQL deyimi yeniden kullanırsanız tutucuları kullanarak bir yan fayda olarak
my $name = "Robert'); DROP TABLE Students; --";
my $sth = $dbh->prepare('SELECT id, age FROM Students WHERE name = ?');
$sth->execute($name); # Finds Little Bobby Tables without harming the db
, (ve eğer yapmazsan az verimli (bu sadece bir kez hazırlanacak gerekiyor) da daha etkili olduğunu eğer yapmazsan arama açıkça hazırlanın, hala sorgu yürütülmeden önce örtülü olarak çağrılır). "SQL Enjeksiyon saldırılarını önleme" Randal Schwartz'ın makale
Veritabanı Kol Metodu "alıntı"
my $dbh = DBI->connect(...);
$sql = sprintf "SELECT foo FROM bar WHERE baz = %s",
$dbh->quote("Don't");
- 1. İç içe geçmiş işlevler için eşdeğer bir eşdeğer var mı?
- 2. C# 7.0 için Microsoft.Net.Compilers eşdeğer var mı?
- 3. Navigator için eşdeğer geçişler var mı?
- 4. System.Text.StringBuilder bir ikili eşdeğer var mı?
- 5. DataContext sınıfına eşdeğer bir LINQPad var mı?
- 6. Mallaştırılmış bir işaretçi için __attribute __ ((ns_returns_retained)) bir eşdeğer var mı?
- 7. Unlisteye() bir S4 eşdeğer var mı?
- 8. Powershell'de "bölünmüş" bir eşdeğer var mı?
- 9. GCC'de stdcall için herhangi bir eşdeğer var mı?
- 10. C# içinde F # Seq.windowed için bir eşdeğer var mı?
- 11. ubuntu altında mercurial için git gui bir eşdeğer var mı?
- 12. .NET'de işlem dışı COM EXE için bir eşdeğer var mı?
- 13. java tr /// (veya eşdeğer) kullanmak için bir yolu var mı?
- 14. IIS için mod_pagespeed Apache modülüne bir eşdeğer var mı?
- 15. Mono için ILMerge eşdeğer bir araç var mı?
- 16. Python için maven/sarmaşık bağımlılık yönetimine bir eşdeğer var mı?
- 17. Perl için Sonar'a eşdeğer bir şey var mı?
- 18. Python os.path.normpath() için PHP eşdeğer bir işlevi var mı?
- 19. Aşınma RemoteInput.setChoices, ancak telefon için herhangi bir eşdeğer var mı?
- 20. Karma için drop_while'ye eşdeğer bir Ruby yöntemi var mı?
- 21. Veri :: Damper'de Perls 'Dumper() yöntemine bir Go Dili eşdeğeri var mı?
- 22. mysql_real_escape_string kısayolu
- 23. Perl DBI
- 24. Android'de iOS NSNotificationCenter'a eşdeğer var mı?
- 25. eşdeğer "verim" excel işlevi var mı?
- 26. Vim'in kaydırması için daha az eşdeğer var mı?
- 27. Android Yerel Yerleşimleri için DOM denetçisine eşdeğer var mı?
- 28. Metin düğümleri için getBoundingClientRect() öğesine eşdeğer var mı?
- 29. iOS için 'adb kabuk giriş klavye metnine' eşdeğer var mı?
- 30. MSTest'in [ClassCleanup] & [ClassInitialize] için statik olmayan eşdeğer var mı?
'DBH-> bind()' doğrudan eşdeğerdir, fakat Sinan'ın dediği gibi, bunu yapma. Yer tutucuları ile doğru şekilde yapın ve değerleri bağlayın. – mpeters