есть класс http://mabp.kiev.ua/content/2008/04/20/request/
я в очередном парыве оптимизации решил заменить один из фильтров оттуда
private function _is_SLU($value){
$this->value = str_replace(array("\\","\"","'","(",")","%","<",">","{","}","/","&","+"), '', $value);
}
он чесно говоря популярностью не пользуеться да и смысла я в нем не вижу особого (у когото содрал), предположительная его функцию сейчас выполняет mysql_real_escape_string которой при написании первых версий класса еще не было
вот собственно вопрос поскольку передать идентификатор соединения в функцию нельзя есть два варианта
private function _is_SQL($value){
// @ гасит ошибку если нет соединения с БД
$this->value = @mysql_real_escape_string($value);
}
при этом варианте возможно два развития событий
1 cсоединенеи с БД еще не было установлено и функция вернет false
2 функция будет использовать последние открыое соединение
обе ситауции мне не подходят так как при первой я вообще потеряю инфу а при второй я могу промахнуться и отэкранирую например для мсскул а засуну в мускул
private function _is_SQL($value){
$this->value = mysql_escape_string($value);
}
результат вообще мне не нравиться така как не зависит от БД
варианты addslashes и использования встроеных возможностей DBAL типа
$stmt = $adodb->Prepare("SELECT * FROM table WHERE id = ?");
$adodb->Execute($stmt, array($id));
не рассматриваються