Можете ли вы дать мне совет? Я искал вопросы, но не нашел ничего похожего на мое.
Как сделать так, чтобы мои пользовательские входы автоматически экранировались, когда они предназначены для использования в запросах SQL? Мне не нравится в моем коде, заполненном чем-то вроде
$var_x = $DB->Escape($_POST['var_x']);
$another_var = $DB->Escape($_POST['another_var']);
$some_string = $DB->Escape($_POST['some_string']);
...
Предполагается, что у меня есть класс базы данных с методом Escape, который выполняет mysql_real_escape_string
Но я не могу установить автоматический экранирование и для SQL-запроса, потому что он прерывает запросы вставки:
function Exec($sql){
$result = mysql_query($this->Escape($sql));
}
$q = $DB->Exec("SELECT * FROM table WHERE id = 'xxx'");
Это делает их \ "ххх \". что неверно.
Последнее, что я хочу сделать, это сделать параметризованные операторы, так как это сделает систему более сложной. Я рассмотрю этот вариант, когда ничего не останется.
Короче говоря - как сделать умный автоматический экранирование, которое работает со всем запросом и экранирует только значения?