मैं एक SQL विवरण पर्ल में नीचे दिखाया गया है एक के समान है:एसक्यूएल तैयार कथन में मैं सिंगल और डबल कोट्स से कैसे बच सकता हूं?
my $sql="abc..TableName '$a','$b' ";
$ एक नि: शुल्क पाठ जिसे एकल कोट, डबल कोट, पीठ और सामने के स्लैश वर्ण, आदि सहित कुछ भी समाहित कर सकता है
एसक्यूएल कथन कार्य करने के लिए ये वर्ण कैसे बच सकते हैं?
धन्यवाद।
my $sth = $dbh->prepare('UPDATE myTable SET myValue=? WHERE myValue=?');
$sth->execute('newValue','oldValue');
यह भी काम करना चाहिए:
my $oldValue = $dbh->quote('oldValue');
my $newValue = $dbh->quote('newValue');
$dbh->do("UPDATE myTable SET myValue=$newValue where myValue=$oldValue");
अभी भी बेहतर है, सबसे अच्छा अभ्यास बाँध मूल्यों का उपयोग करने के लिए है:
'$ a' और' $ b' का 'सॉर्ट' फ़ंक्शन से संबंधित विशेष अर्थ है। आमतौर पर उनका उपयोग करने का अच्छा विचार नहीं है। कोड नमूने में छोटे चर नामों को छोड़कर। – daotoad
[perl] टैग के अलावा, [PHP में एसक्यूएल इंजेक्शन को रोकने के लिए सबसे अच्छा तरीका] की नकल (http://stackoverflow.com/q/60174/90527)। कोड नमूने में एकमात्र व्यावहारिक अंतर निहित है। इसके अलावा, [एसक्यूएल इंजेक्शन हमलों से बचने का सबसे अच्छा तरीका क्या है?] (Http://stackoverflow.com/q/1973/)। – outis