Использование real_escape_string MySQLi в качестве статической функции

Мне интересно, могу ли я избежать строк (используя real_escape_string) без предварительного создания экземпляра объекта для применения функции?

т.е. мы можем это сделать:

$database = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME); $database->real_escape_string($query); $database->query($query) 

и т.п.

Однако то, что я пытаюсь сделать для согласованности в моем приложении, состоит в том, чтобы иметь в основном статический класс базы данных, который является расширением класса MySQLi, так что я мог бы вызвать: database::real_escape_string($query) , статический метод ,

Я действительно понимаю, что я мог бы построить функцию, которая ускользает от строки вручную без MySQL.

Related of "Использование real_escape_string MySQLi в качестве статической функции"

Короткий ответ – нет.

Долгий ответ: Ну, это не рекомендуется по простой причине – реальный побег MySQLi учитывает кодировку символов, так как определенный тип методов SQL-инъекций использует и злоупотребляет кодировкой символов для обхода общих фильтров. Это требует, чтобы код знал как кодировку исходного кода (PHP), так и конфигурацию charset получателя (MySQL). Вот почему его нельзя назвать статически (и его нельзя вызвать до тех пор, пока у вас не будет действующей ссылки на сервер)!

Я бы также избежал процедурной версии этого, так как он просто «кодирует» бит под капотом, эффективно беря последний сервер, к которому вы подключились, что может привести к забавному материалу, когда вы имеете дело с несколькими базами данных соединения одновременно.

mysql_real_escape_string () может вам помочь, но вы должны установить соединение в обеих версиях. причина этого в том, что приложение не знает, как избежать строк для базы данных. при подключении к базе данных функция запрашивает базу данных о том, как убежать и что сбежать.