«Я почти уверен, что addlashes - это то же самое, что экранировать с помощью mysql_real_escape_string, вот класс.»
Во-первых, это не так.mysql_real_escape_string
знает о соединении и принимает во внимание набор символов этого соединения.
Во-вторых, вы в основном копируете неудачный magic_quotes
дизайн.Не все эти поля входят в базу данных, поэтому вы выполняете ненужную работу.Вы также должны быть осторожны, чтобы никогда не экранировать что-либо в «чистом» массиве;Двойное экранирование - очень распространенная проблема.
На мой взгляд, самое простое решение SQL-инъекции - это подготовленные операторы.Я рекомендую использовать PDO
или mysqli
.
РЕДАКТИРОВАТЬ: Поскольку вы уже используете mysqli, вы должны забыть об этой идее CLEAN, и простоиспользуйте MySQLi_STMT
.mysqli::prepare
дает пример того, как создавать и связывать переменные с подготовленным оператором.Обратите внимание на ?
заполнитель.Также посмотрите на mysqli_stmt::bind_param
.