Хорошо, поэтому вы уже выяснили, что не должны использовать функции mysql_xxx()
. Это хорошо.
Альтернативами являются библиотеки mysqli
и PDO
.
Обе эти библиотеки предлагают эквивалентные функции mysql_real_escape_string
, но они также предлагают лучшую альтернативу, называемую параметризованными запросами (или подготовленными заявлениями).
Это альтернативный метод написания запросов с переменными, который считается гораздо лучше, чем использование метода escape-последовательности.
Что происходит, так это то, что вы определяете свой запрос с помощью заполнителей, а не переменных; что-то вроде этого:
SELECT * FROM table WHERE id = :id
где :id
является заполнитель.
Вы вызываете функцию с запросом, как указано выше, с помощью заполнителей, а затем разделяете вызовы для связывания переменных с каждым из заполнителей.
Точный код для этого отличается от библиотек mysqli
и PDO
, но в обоих случаях переменные отправляются на сервер БД отдельно от запроса, и, следовательно, нет никакой вероятности атаки SQL-инъекции.
Библиотека PDO, как правило, считается лучшим вариантом.Вот некоторые ссылки на хорошие сайты с примерами того, как написать код:
Надежда, что помогает.
Функции MySQL были заменены функциями MySQLi (и связью других функций доступа к базе данных). 'mysql_real_escape_string' все еще работает, это просто, что он находится в устаревшем пакете. – zneak