Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Что вырезать из запроса


Автор: Lan 14.3.2006, 13:30
Пользователь передал мне какие-то данные. Я их передаю в БД. Заключаю в запросе их в обычные одинарные кавычки (') Что из них вырезать?

Эти самые одинарные кавычки, двойные кавычки. Что ещё? Минусики?

P.S. тему подобную посмотрел - не нашёл.
P.P.S. или мне смотреть документацию к MySQL, раздел "безопасность"? smile
Добавлено @ 13:35
P.P.P.S. Может ещё знает кто, в Perl DBI есть метод quote. Он делает как раз то, что надо. Но может ещё что-то надо?

Автор: Secandr 14.3.2006, 13:50
Ты же потом это чудо в html вставлять будешь?
Тогда проще заменить ' и на всякий случай " на их код вида: &XXXX;

Автор: Lan 14.3.2006, 14:05
Ну да, ну да. Я не вырезаю, я заменяю на
Код
"

Добавлено @ 14:09
и для ' соответственно

Автор: Kesh 14.3.2006, 17:08
Lan, откуда передал-то...

Автор: Darhazer 14.3.2006, 17:15
Несколько месецов назад я встретил вот такой код:

Код

function DBEscape($string)
{
if (!function_exists("mysql_escape_string"))  {
    $string = str_replace("\\","\\\\",$string);
    $string = str_replace("\0",'\0',$string);
    $string = str_replace("\n",'\n',$string);
    $string = str_replace("\r",'\r',$string);
    $string = str_replace("'",'\\\'',$string);
    $string = str_replace("\"",'\"',$string);
    $string = str_replace("\032","\\Z",$string);

    return $string;
  }
else {
    return mysql_escape_string($string);
}
}


Я досих пор его пользую, и проблем не били
А иначе делал просто addslashes($string)

P.S.
Цитата
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.


Я все это показиваю просто чтоб увидеть что вырезивають из запроса PHP программисти

Автор: Secandr 14.3.2006, 17:36
Lan, " идеальное решение. Вообще кавычек нет в тексте smile

Автор: Lan 15.3.2006, 06:28
Цитата(Kesh @ 14.3.2006, 17:08)
Lan, откуда передал-то...

Из формы на странице, например. А может и не совсем из формы, а терминалом. smile
Добавлено @ 06:35
Цитата
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.

Кажется, это ОНО.
Немного непонятно, зачем только \n и \r. И что это за 1a символ... Но если разработчики MySQL'я рекомендуют, то...

Автор: Darhazer 15.3.2006, 13:48
\x1a = ASCI(26) = Ctrl+Z ( или \Z)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)