SQL Server 2008 ve PHP - sqlsvr_escape_string?

2 Cevap php

I mysql_real_escape_string gibi benzer bir kaçış dize yok php ve SQL Server 2008 ve PHP 1.0 için SQL Server sürücüsü kullanıyorum.

Ben sadece böyle bir şey ile tek alıntılar değiştirmeniz gerekiyor

function sqlsvr_escape_string($string)
{
  $pattern = "'";
  $replace = "''";
  return(stripslashes(eregi_replace($pattern,$replace,$string)));
}

Bu parametrized ifadeleri kullanır, çünkü ya ben endişe etmesine gerek yok? örneğin

$tsql = "SELECT * from tblUsers where email=(?) AND password=(?)";
$params = array($email, $encryptedPass);
$stmt = sqlsvr_prepare($conn, $tsql, $params);

Ben bulabildiğim tek kaynak this burada yukarıdaki pasajı değil idi.

Herhangi bir yardım ve yorumlar için teşekkürler.

-TK

2 Cevap

Daha sonra. Eğer parametrized ifadeleri kullanarak konum eğer SQL kaçan hakkında endişeli olması gerekmez.

Görünümünde bir "müşteri kodlayıcı" noktası (gibi SQL Server bir istemci konum) itibaren, parametrized ifadeleri kullanmak nedeni düzgün ve / veya sürekli kendi değerlerini kaçmak için kendinize güvenmiyorsanız değildir. Bunun yerine, oluşturduğunuz ve sqlsvr_prepare (veya adodb, ya Propel, ya Doktrini, veya vb) korumak programcılar için bu sorumluluğu outsource. Tüm verileri düzgün kaçtı olduğundan emin olmak için their iş.

(Belki "parametrized ifadeleri" olarak adlandırılır) hazırlanan ifadeleri kullandığı gibi, kendiniz verileri kaçmak gerekmez: sürücüsü DB ne bağlı olanlar, kaçmak için nasıl bilecek, sanırım.

Ben kendi öncelemeli işlevi yazmak zorunda değilsiniz eminim.

Emin BGE için iyi olsa da, test etmek için: örneğin, tek bir teklif içeren bazı rasgele dize enjekte edebilir? Alıntı DB içine saklanır, ya da bir hata alıyorum?