2016-06-16 5 views
1

Почему я не использовал функцию mysqli_escape_string без подключения к базе данных?Почему mysqli_escape_string требует подключения к базе данных?

+0

Впрыск невозможен без подключения к базе данных, так что конкретно спрашивает ваш вопрос? – Matt

+5

Потому что это база данных, которая знает, как символы цитат и т. Д. Должны быть экранированы, а не PHP; поэтому PHP позволяет базе данных делать это –

+0

обновил вопрос –

ответ

4

От the documentation:

экранирует специальные символы в строке для использования в операторе SQL, принимая во внимание текущую кодировку соединения

Он должен иметь связь с тем, что знает, какую кодировку использует база данных, поэтому она может использовать правильные правила для экранирования данных.

2

Ответ Квентина сводит его к сути.

Я хотел бы также добавить, что

  • Как Квентин уже упоминалось, кодировка известна только в контексте активного соединения - и очень важно, чтобы избежать.
  • и обычно объект соединения должен быть доступен для любой части вашего кода, требующего его. Всякий раз, когда вам нужно убежать, вам, скорее всего, также нужно будет использовать соединение. Если ваша проблема заключается в том, что «объект подключения недоступен в этой части моего кода», то вам обязательно над этим стоит работать!
  • И, пожалуйста, не пытайтесь воспроизвести поведение mysqli_escape_string себя в PHP! Это только делает его потенциально уязвимым для злоумышленников. Не думайте, что это так же просто, как конвертировать " в \"!

Пожалуйста, внимательно ознакомьтесь с № 2 и № 3. Задавая этот вопрос, я предполагаю, что у вас есть какая-то архитектурная проблема в вашем проекте.

Смежные вопросы