Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 22 Май, 2012, 06:50:25

Страниц: [1]
Печать
Автор Тема: mysql(i)?(_real)?_escape_string  (Прочитано 698 раз)
0 Пользователей и 1 Гость смотрят эту тему.
CTAPbIu_MABP    ↓ 
21 Август, 2008, 11:53:57
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

вопрос опять же таки идеологический
 
есть класс http://mabp.kiev.ua/content/2008/04/20/request/
я в очередном парыве оптимизации решил заменить один из фильтров оттуда
 
PHP

private function _is_SLU($value){
$this->value = str_replace(array("\\","\"","'","(",")","%","<",">","{","}","/","&","+"), '', $value);
}
 
он чесно говоря популярностью не пользуеться да и смысла я в нем не вижу особого (у когото содрал), предположительная его функцию сейчас выполняет mysql_real_escape_string которой при написании первых версий класса еще не было
 
вот собственно вопрос поскольку передать идентификатор соединения в функцию нельзя есть два варианта
 
PHP

private function _is_SQL($value){
// @ гасит ошибку если нет соединения с БД
$this->value = @mysql_real_escape_string($value);
}
 

при этом варианте возможно два развития событий
1 cсоединенеи с БД еще не было установлено и функция вернет false
2 функция будет использовать последние открыое соединение
 
обе ситауции мне не подходят так как при первой я вообще потеряю инфу а при второй я могу промахнуться и отэкранирую например для мсскул а засуну в мускул
 
PHP

private function _is_SQL($value){
$this->value = mysql_escape_string($value);
}
 
результат вообще мне не нравиться така как не зависит от БД
 
варианты addslashes и использования встроеных возможностей DBAL типа
 
PHP

$stmt = $adodb->Prepare("SELECT * FROM table WHERE id = ?");
$adodb->Execute($stmt, array($id));
 

не рассматриваються
Записан

java.lang.OutOfMemoryError
Страниц: [1]
Печать
 

Перейти в: