2009-05-01 14 views
6

jestem ucieczki wszystkie parametry ciąg otrzymuję z formularza php tak:mysql_real_escape_string() całkowicie usuwa ciąg

$usr_name = mysql_real_escape_string($_REQUEST['usr_name']); 

aby uniknąć kilka problemów z SQL Injection. Ale kiedy wycofam się z funkcji, kończę z niczym.

także wciąż otrzymuję ostrzeżenie to dziwne w moim dzienniku PHP:

PHP Warning: mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: A link to the server could not be established in /hermes/bosweb/web279/b2798/ipw.bankingforms/public_html/formAckResponse_controller.php on line 39 

Przyjmujące zastosowań: Wersja PHP 4.4.7

Odpowiedz

17

Od PHP.net:

Uwaga: MySQL wymagane połączenie przed użyciem mysql_real_escape_string() inaczej błąd poziom E_WARNING jest wygenerowany , a zwracany jest FALSE. Jeśli nie zostanie zdefiniowane link_identifier, używane jest ostatnie połączenie MySQL z .

Innymi słowy, trzeba będzie potrzebne do połączenia się z bazą danych MySQL za pośrednictwem mysql_connect() lub mysql_pconnect() zanim będzie można korzystać z tej funkcji.

+0

Znam to, ale nigdy nie wiedziałem, dlaczego. Czy funkcja działa po stronie serwera bazy danych? Czy jest to po prostu ograniczenie API? – ryandenki

+2

Jest uruchamiany po stronie serwera, ponieważ ucieczka MySQL zależy od zestawu znaków aktualnie używanego przez serwer. – hbw

+0

dziękuję, to dobrze wiedzieć. – ryandenki