Ben sadece bir kez daha veri daha mysql_real_escape eğer bir fark olup olmadığını merak ediyorum?
Yani başka bir kod parçası daha sonra benim web sitesinin bir bölümünde verileri kaçtı, ve eğer. Bu bir sorun olur mu? Ya da bir fark?
Elbette veri çift kaçtı olacaktır.
Sen mysqli uzun yeterince yapışmasını edilmiştir aracılığıyla, mysql_real_escape()
tüm parametreli sorguları kullanmanız gerekir.
Evet, bu bir aşırı-maşası sorun olacaktır. Bu ne olursa olsun tam olarak ne yaptığını, herhangi kaçması için aynıdır. Örneğin, eğer ortak kural aşağıdaki dizede çift tırnak kaçmak istiyorum:
bla "foo"
bir kaçışa olduktan sonra
bla \"foo\"
İki olduktan sonra
bla \\\"foo\\\"
ve benzerleri. "Unescapements" sayısı tam olarak "escapements" sayısı aynı olmalıdır. Basit kesme çıkışında \'
olur böylece, metin alanlarındaki bazı karakterler aşırı kaçan bazı sitelerde bu sorunun belirtileri görebiliyordu.
Kaçan bir dize gibi görünüyor şey amaçlanan çıkmamış dize oldu, çünkü kaçan ve çıkmamış bir dize ayırt etmek mümkün değildir. Bu nedenle, tekrar kaçmaya çalışırken, kaçışa kaçmak olurdu - ve kaçtı-bir kez metin MySQL okur ne olacak.
Bu nedenle, bir kez daha kaçmayı asla.
O zaman hiç kaçmak gerekmez Ancak, daha iyi bir çözüm, paramterized sorguları kullanmaktır.
Evet, bu bir sorun olacaktır.
For example:
if a is "Joe's House", the first call will produce "Joe\'s House" and the second one will produce "Joe\\\'s House", saving the backslash in the database.
Bu web sunucusu etkin sihirli tırnak vardır ve istemci girişi mysql_real_escape_string kullandığınızda ortaya sorununa benzer. Bu çözülür:
if (! get_magic_quotes_gpc()) {
$value = mysql_real_escape_string($_GET["value"]);
} else {
$value = mysql_real_escape_string(stripslashes($_GET["value"]));
}
(Ikincisi örneğin http://www.php.net/get_magic_quotes_gpc bakınız)
[Aşağıda yorum olarak düzeltmeleri yansıtacak şekilde cevap Düzenlenen]